123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791 |
- //// CANPort.cpp: implementation of the CCANPort class.
- ////
- ////////////////////////////////////////////////////////////////////////
- //
- #include "stdafx.h"
- //#include "resource.h"
- //#include "CANPort.h"
- ////#include "wddr.h"
- ////#include "log.h"
- ////#include "WDDR.h"
- //#ifdef _DEBUG
- //#undef THIS_FILE
- //static char THIS_FILE[]=__FILE__;
- //#define new DEBUG_NEW
- //#endif
- //
- ////#include "Table.h"
- ////#include "Aqmodule.h"
- ////#include ".\Generator\GeneratorD100.h"
- //#include "Usbcan\SimulateCan.h"
- ////#include "ReplaceYaoTai.h"
- //
- ////CTable* CCANPort::m_pTable = NULL;
- ////CReplaceYaoTai* CCANPort::m_pReplaceYaoTai = NULL;
- ////////////////////////////////////////////////////////////////////////
- //// Construction/Destruction
- ////////////////////////////////////////////////////////////////////////
- //
- //
- //
- ////-----------------------------------------------------
- ////参数:
- ////chr:要转换的字符
- ////cint:储存转换过来的数据
- ////函数功能:字符转换为数据
- ////-----------------------------------------------------
- //int chartoint(unsigned char chr, unsigned char* cint)//CCANPort::
- //{
- // unsigned char cTmp;
- // cTmp = chr - 48; //0-9
- // if (cTmp >= 0 && cTmp <= 9)
- // {
- // *cint = cTmp;
- // return 0;
- // }
- // cTmp = chr - 65;//A-F
- // if (cTmp >= 0 && cTmp <= 5)
- // {
- // *cint = (cTmp + 10);
- // return 0;
- // }
- // cTmp = chr - 97;//a-f
- // if (cTmp >= 0 && cTmp <= 5)
- // {
- // *cint = (cTmp + 10);
- // return 0;
- // }
- // return 1;
- //}
- //
- // //-----------------------------------------------------
- ////参数:
- ////str:要转换的字符串
- ////data:储存转换过来的数据串
- ////len:数据长度
- ////函数功能:字符串转换为数据串
- ////-----------------------------------------------------
- //int strtodata(unsigned char* str, unsigned char* data, int len, int flag)//CCANPort::
- //{
- // unsigned char cTmp = 0;
- // int i = 0;
- // for (int j = 0; j < len; j++)
- // {
- // if (chartoint(str[i++], &cTmp))
- // return 1;
- // data[j] = cTmp;
- // if (chartoint(str[i++], &cTmp))
- // return 1;
- // data[j] = (data[j] << 4) + cTmp;
- // if (flag == 1)
- // i++;
- // }
- // return 0;
- //}
- //
- //
- //
- //CCANPort::CCANPort()
- //{
- //// m_devtype = VCI_USBCAN1;
- // //device index
- // m_devind = 0;
- // //can number
- // m_cannum = 0;
- // //about thread
- // m_bCANThreadActive = FALSE;
- // m_Thread = NULL;
- // //can start flag
- // m_bCanStart = FALSE;
- // //2007.10.30-所有和CAN相连接的接口
- // //m_p50RF_RAD = NULL;
- // //m_pGeneratorD100 =NULL;
- // //m_pInfChestBrd = NULL;
- // m_hCANWindowHandle = NULL;
- //
- // m_nAngleDirection = 0;
- //
- // int m_nCANType = 0;
- // switch(m_nCANType)
- // {
- // case 0:
- // m_pCANEx = new CZLG;
- // break;
- // case 1:
- // m_pCANEx = new CPC;
- // break;
- // case 2:
- // m_pCANEx = new CJY;
- // case 9:
- // m_pCANEx = new CSimulateCan;
- // break;
- // }
- //}
- //
- //CCANPort::~CCANPort()
- //{
- //
- // if(m_Thread != NULL)
- // {
- // //DWORD dwSuspendCount;
- // //do{
- // // dwSuspendCount = m_Thread->ResumeThread();
- // //}while((dwSuspendCount != 0) && (dwSuspendCount != 0xffffffff) );
- //
- // //if (m_bCANThreadActive)//当前状态可能是活动也可能是不活动的
- // // m_bCANThreadActive = FALSE;
- //
- // //WaitForSingleObject(m_Thread->m_hThread,INFINITE);
- // //delete m_Thread;
- //
- // if (m_bCANThreadActive)
- // m_bCANThreadActive = FALSE;
- // }
- //
- //
- //
- // CAN_Close();
- // if(m_pCANEx)
- // {
- // delete m_pCANEx;
- // m_pCANEx = NULL;
- // }
- //}
- //
- ///*
- //*正常返回0,否则为1;
- //*/
- //BOOL CCANPort::CAN_Open(/*int DeviceType,*/DWORD DeviceInd, int Reserved)
- //{
- //// m_devtype = DeviceType;
- // m_devind = DeviceInd;
- // INT nFlag = 0;
- //// while(VCI_OpenDevice(m_devtype,m_devind,Reserved) != STATUS_OK)
- // if (!m_pCANEx->LoadDLL())
- // {
- // return FALSE;
- // }
- // while(m_pCANEx->OpenDevice(m_devind)!= STATUS_OK)
- // {
- // if(2 == nFlag++)
- // {
- // return FALSE;
- // }
- // Sleep(1000);
- // }
- // return TRUE;
- //}
- //
- //bool CCANPort::CAN_Start()
- //{
- // //if(VCI_StartCAN(m_devtype,m_devind,m_cannum)==1)
- // if(m_pCANEx->StartCAN(m_devind,m_cannum)==1)
- // {
- // m_bCanStart = TRUE;
- // return true;
- // }
- // else
- // {
- // return false;
- // }
- //
- //}
- //bool CCANPort::CAN_Reset()
- //{
- // //2007.11.19_此函数用来复位CAN
- // //if(VCI_ResetCAN(m_devtype,m_devind,m_cannum) == 1)
- // if(m_pCANEx->ResetCAN(m_devind,m_cannum)==1)
- // {
- // m_bCanStart = FALSE;
- // return true;
- // }
- // else
- // {
- // //VCI_CloseDevice(m_devtype,m_devind);
- // m_pCANEx->CloseDevice(m_devind);
- // m_bCanStart = FALSE;
- // return false;
- // }
- //
- //}
- //
- //void CCANPort::CAN_Close()
- //{
- // if(!m_bCanStart)
- // return;
- //
- // m_bCanStart = FALSE;
- //
- // Sleep(100);
- //
- // m_pCANEx->CloseDevice(m_devind);
- //}
- //
- //
- //BOOL CCANPort::CAN_Init(HWND hWnd, DWORD dwAccCode, DWORD dwAccMask, UCHAR ucFilter, UCHAR ucMode, UCHAR ucTiming0, UCHAR ucTiming1, int nCannum)
- //{
- // m_hCANWindowHandle = hWnd; //0
- // init_config.AccCode = dwAccCode; //0 验收码
- // init_config.AccMask = dwAccMask; //ffffffff 屏蔽码
- // init_config.Filter = ucFilter; //1 滤波方式:单滤/双滤0/1
- // init_config.Mode = ucMode; //0 模式:正常/只听,0/1
- // init_config.Timing0 = ucTiming0; //TIMING0 定时器1 timing0;
- // init_config.Timing1 = ucTiming1; //TIMING1
- // m_cannum = nCannum; //nCannum
- //
- // //初始化CAN
- // if (m_pCANEx->InitCAN(m_devind, m_cannum, &init_config) != STATUS_OK)
- // {
- // //VCI_CloseDevice(m_devtype,m_devind);
- // m_pCANEx->CloseDevice(m_devind);
- // return false;
- // }
- //
- // //开启接收线程
- //
- // DWORD m_HardwareStatusID;
- // m_Thread = CreateThread(0, 0, ReceiveThread, this, 0, (LPDWORD)m_HardwareStatusID);
- // if (m_Thread == NULL)
- // {
- // mLog::Fatal("Start HardwareStatus Thread Failed");
- // return false;
- // }
- //
- //
- //
- // //m_Thread = AfxBeginThread(ReceiveThread, this, THREAD_PRIORITY_BELOW_NORMAL/*THREAD_PRIORITY_NORMAL*/, 0, CREATE_SUSPENDED);
- // //m_Thread->m_bAutoDelete = FALSE;
- // //m_Thread->ResumeThread();
- //
- // return TRUE;
- //}
- //
- //
- //bool CCANPort::CAN_transmit(string strData, string strFrmID, BYTE RomoteFlag/*= 0*/, BYTE ExternFlag/*= 0*/, BYTE type/*=1*/)
- //{
- // VCI_CAN_OBJ frameinfo;
- // BYTE FrameID[4] = { 0,0,0,0 };
- // char szFrameID[9];
- // memset(szFrameID, '0', 9);
- // unsigned char Data[8];
- // char szData[25];
- // BYTE datalen = 0;
- //
- // //帧ID占4个字节,用16进制表示:0x21A09878,字符表示长度为8,----------------------here ,maybe not right.because as i know frameID =4.
- // if (strFrmID.length()>8)
- // {
- // return false;
- // }
- // //if (strFrmID.GetLength() > 8)
- // //{
- // // return false;
- // //}
- //
- // //发送数据,16进制表示,每个数无空格, 即:"01A1098070000000",最多16个数
- // //if (strData.GetLength() > 16)
- // if (strData.length() > 16)
- // {
- // return false;
- // }
- //
- // //发送帧类型:标准,扩展
- // if (ExternFlag == 0)//标准帧
- // {
- // if (strData.length() % 2 == 1)//。。。?
- // {
- // return false;
- // }
- // }
- // //copy 到低位
- // memcpy(&szFrameID[8 - strFrmID.length()], strFrmID.c_str(), strFrmID.length());
- //
- // strtodata((unsigned char*)szFrameID, FrameID, 4, 0);
- // //发送数据是16进制表示,每个数据之间有空格
- // datalen = (strData.length()) / 2;//实际个数
- //
- // strcpy(szData, strData.c_str());
- //
- // strtodata((unsigned char*)szData, Data, datalen, 0);
- //
- // frameinfo.DataLen = datalen;
- //
- // memcpy(&frameinfo.Data, Data, datalen);
- //
- // frameinfo.RemoteFlag = RomoteFlag;//数据帧/远程帧
- // frameinfo.ExternFlag = ExternFlag;
- //
- // frameinfo.TimeFlag = 0;
- // frameinfo.TimeStamp = 0;
- //
- // //帧类型约束帧ID的实际占有位数
- // if (frameinfo.ExternFlag == 1)
- // {
- // frameinfo.ID = ((DWORD)FrameID[0] << 24) + ((DWORD)FrameID[1] << 16) + ((DWORD)FrameID[2] << 8) +
- // ((DWORD)FrameID[3]);
- // }
- // else
- // {
- // frameinfo.ID = ((DWORD)FrameID[2] << 8) + ((DWORD)FrameID[3]);
- // }
- // frameinfo.SendType = type;//发送格式:单发。。
- //
- //
- // CCAN* p = m_pCANEx;
- // if (m_pCANEx->Transmit(m_devind, m_cannum, &frameinfo, 1) == 1)
- // {
- // return true;
- // }
- // else
- // {
- // Sleep(20);
- // if (m_pCANEx->Transmit(m_devind, m_cannum, &frameinfo, 1) == 1)
- // return true;
- // else
- // {
- // return false;
- // }
- // }
- //
- // return false;
- //}
- //
- //
- //DWORD CCANPort::ReceiveThread(void *param)
- //{
- // CCANPort* port = (CCANPort *)param;
- //
- // VCI_CAN_OBJ frameinfo[50];
- // VCI_ERR_INFO errinfo;
- // string strFrmID;
- // int nRecvDataLen = 1;
- //
- // string str;
- //
- // char recvbuf[10]{ 0,0,0,0,0,0,0,0,0,0 };
- //
- // port->m_bCANThreadActive = true;
- //
- // while(port->m_bCANThreadActive)
- // {
- // if (port == NULL) { return 0; }
- //
- // Sleep(4);
- // nRecvDataLen = port->m_pCANEx->Receive(port->m_devind, port->m_cannum, frameinfo, 50, 200);
- // if (nRecvDataLen == 0xffffffff)
- // {
- // port->m_pCANEx->ReadErrInfo(port->m_devind,port->m_cannum,&errinfo);
- // }
- // else
- // {
- //
- // //str.Format("frameinfo->ID=%X,frameinfo->DataLen=%d, [%02X,%02X,%02X,%02X,%02X,%02X,%02X,%02X]",
- // recvbuf[0] = frameinfo->ID;
- // recvbuf[1] = frameinfo->DataLen;
- // recvbuf[2] = frameinfo->Data[0];
- // recvbuf[3] = frameinfo->Data[1];
- // recvbuf[4] = frameinfo->Data[2];
- // recvbuf[5] = frameinfo->Data[3];
- // recvbuf[6] = frameinfo->Data[4];
- // recvbuf[7] = frameinfo->Data[5];
- // recvbuf[8] = frameinfo->Data[6];
- // recvbuf[9] = frameinfo->Data[7];
- // //port->m_pTableCtrl->m_pLog->WriteLog(str);
- // mLog::Info("CAN recv data:{$}\n", recvbuf);
- //
- //
- //
- //
- // if (frameinfo->ID == 0x405 && frameinfo->DataLen == 8)//立柱板节点
- // {
- //#pragma region ID405
- //
- // if (frameinfo->Data[1]==1)
- // {
- // mLog::Info("recv Column heart beat.");
- // }
- //
- // if (frameinfo->Data[1]==2)
- // {
- // //配置信息回复
- // int nPanelType = frameinfo->Data[2];//平板选择
- // int nAngle = frameinfo->Data[3];//C臂ML0位:角度
- // mLog::Info("recv : panel type:{$},C臂ML0位:角度={$}", nPanelType, nAngle);
- // //port->m_pTableCtrl->m_pLog->WriteLog(str);
- // }
- // if (frameinfo->Data[1]==3)
- // {
- // //曝光模式回复
- // int nExpMode = frameinfo->Data[2];
- // int nAECfield = frameinfo->Data[3];
- // int nAECDensity = frameinfo->Data[4];
- // mLog::Info("recv: exp mode:{$},AEC field={$},AEC density={$}", nExpMode, nAECfield, nAECDensity);
- // }
- // if (frameinfo->Data[1] == 4 && frameinfo->Data[2] == 0x61)
- // {
- // mLog::Info("recv ANRAN panel ready or not.");
- // }
- //
- // if (frameinfo->Data[2] == 0x10)
- // {
- // mLog::Info("recv panel ready status");
- // }
- // if (frameinfo->Data[2] == 0x20)
- // {
- // mLog::Info("recv gen ready status");
- // }
- // if (frameinfo->Data[2] == 0x30)
- // {
- // mLog::Info("recv exp start");
- // }
- // if (frameinfo->Data[2] == 0x40)
- // {
- // mLog::Info("recv exp finished");
- // }
- // if (frameinfo->Data[2] == 0x50)
- // {
- // mLog::Info("recv workflow finished.");
- // }
- //
- //
- //#if 0
- // int sid = (int)(frameinfo->Data[2] * 256 + frameinfo->Data[3]);
- // port->m_pTableCtrl->m_nSID = sid;
- // port->m_pTableCtrl->MSGControl(port->m_pTableCtrl->m_pWnd, ECOM_MSG_RFMC_PARAMOUT, ECOM_MECHCOMP_PA_SID, sid, ECOM_MSG_TYPE_SYNC_NO, ECOM_MSG_TARGETHANDLE_RFOC);
- // port->m_pTableCtrl->MSGControl(port->m_pTableCtrl->m_pWnd, ECOM_MSG_RFMC_PARAMOUT, ECOM_MECHCOMP_PA_SID, sid, ECOM_MSG_TYPE_SYNC_NO, ECOM_MSG_TARGETHANDLE_RFHARDWARE);
- //
- //
- // int _collimatorWsize = (int)(frameinfo->Data[4] * 256 + frameinfo->Data[5]);
- // int _collimatorHsize = (int)(frameinfo->Data[6] * 256 + frameinfo->Data[7]);
- //
- // port->m_pTableCtrl->m_nCollRealWSize = _collimatorWsize;
- // port->m_pTableCtrl->m_nCollRealHSize = _collimatorHsize;
- //
- // CString strlog;
- // strlog.Format("feedback collimator real size: id=0x7f0, height=%d mm,width=%d mm, sid=%d cm.", _collimatorHsize, _collimatorWsize, sid);
- // port->m_pTableCtrl->m_pLog->WriteLog(strlog, LOG_INFORMATION);
- //
- // int virtual_Wsize = 1;
- // int virtual_Hsize = 1;
- // if (port->m_pTableCtrl->m_nZoomMode == 0)//17*17
- // {
- //
- // virtual_Wsize = int(_collimatorWsize / port->m_pTableCtrl->m_fHcoefficient / 10 / port->m_pTableCtrl->m_nFrontPartSID *port->m_pTableCtrl->m_nSID + 0.5);
- // virtual_Hsize = int(_collimatorHsize / port->m_pTableCtrl->m_fVcoefficient / 10 / port->m_pTableCtrl->m_nFrontPartSID *port->m_pTableCtrl->m_nSID + 0.5);
- // }
- // else if (port->m_pTableCtrl->m_nZoomMode == 1)//9*9
- // {
- //
- // virtual_Wsize = int(_collimatorWsize / port->m_pTableCtrl->m_fHcoefficientZoom1 / 10 / port->m_pTableCtrl->m_nFrontPartSID *port->m_pTableCtrl->m_nSID + 0.5);
- // virtual_Hsize = int(_collimatorHsize / port->m_pTableCtrl->m_fVcoefficientZoom1 / 10 / port->m_pTableCtrl->m_nFrontPartSID *port->m_pTableCtrl->m_nSID + 0.5);
- // }
- // strlog.Format("feedback collimator virtual size: id=0x7f0, height=%d cm,width=%d cm", virtual_Hsize, virtual_Wsize);
- // port->m_pTableCtrl->m_pLog->WriteLog(strlog, LOG_INFORMATION);
- //
- //
- //
- // if (port->m_pTableCtrl->m_pWnd != nullptr)
- // {
- // port->m_pTableCtrl->MSGControl(port->m_pTableCtrl->m_pWnd, ECOM_MSG_RFMC_PARAMOUT, ECOM_MECHCOMP_PA_COLLIMATOR, _collimatorWsize + _collimatorHsize * 100, ECOM_MSG_TYPE_SYNC_NO, ECOM_MSG_TARGETHANDLE_RFOC);
- // port->m_pTableCtrl->MSGControl(port->m_pTableCtrl->m_pWnd, ECOM_MSG_RFMC_PARAMOUT, ECOM_MECHCOMP_PA_COLLIMATOR, _collimatorWsize + _collimatorHsize * 100, ECOM_MSG_TYPE_SYNC_NO, ECOM_MSG_TARGETHANDLE_RFHARDWARE);
- //
- // }
- // else
- // {
- // port->m_pTableCtrl->m_pLog->WriteLog("port->m_pTableCtrl->m_pWnd == nullptr", LOG_INFORMATION);
- // }
- //
- //
- //#endif // 0
- //#pragma endregion
- //
- // }
- // else if (frameinfo->ID == 0x425)//C臂控制板节点
- // {
- //#pragma region ID425
- //
- //
- //
- // if (frameinfo->Data[0]==0)
- // {
- // if (frameinfo->Data[1]==0x18)
- // {
- // mLog::Info("recv 双电位器错误 or not.Data[2]决定.");
- // }
- // if (frameinfo->Data[1]==0x06)
- // {
- // int nAngleSignal = frameinfo->Data[2];
- // int nAngleValue = frameinfo->Data[3];
- //
- // if (2 == nAngleSignal)//负
- // {
- // nAngleValue *= -1;
- // }
- // mLog::Info("recv C 臂旋转角度:{$}", nAngleValue);
- //
- // //port->m_pTableCtrl->MSGControl(port->m_pTableCtrl->m_pWnd, ECOM_MSG_RFMC_PARAMOUT, ECOM_MECHCOMP_PA_COLL_ANGLE, nAngleValue, ECOM_MSG_TYPE_SYNC_NO, ECOM_MSG_TARGETHANDLE_RFOC);
- // //port->m_pTableCtrl->MSGControl(port->m_pTableCtrl->m_pWnd, ECOM_MSG_RFMC_PARAMOUT, ECOM_MECHCOMP_PA_COLL_ANGLE, nAngleValue, ECOM_MSG_TYPE_SYNC_NO, ECOM_MSG_TARGETHANDLE_RFHARDWARE);
- //
- // }
- // }
- // if (frameinfo->Data[1]==1)
- // {
- // if (frameinfo->Data[1] == 1)
- // {
- // mLog::Info("recv C arm heart beat.");
- // }
- //
- // if (frameinfo->Data[1] == 2)
- // {
- // int nPrePressLimitValue = frameinfo->Data[2];
- // int nTotalPressLimitValue = frameinfo->Data[3];
- // mLog::Info("nPrePressLimitValue={$},nTotalPressLimitValue={$}", nPrePressLimitValue, nTotalPressLimitValue);
- //
- // }
- //
- // if (frameinfo->Data[1] == 3)
- // {
- // int nPressType = frameinfo->Data[2];
- // int nReleaseType = frameinfo->Data[3];
- // mLog::Info("recv:press type={$},release type={$}", nPressType,nReleaseType);
- //
- // }
- //
- // if (frameinfo->Data[1] == 4)
- // {
- // //振栅模式
- // int nGridType = frameinfo->Data[2];
- // mLog::Info("Grid Type={$}", nGridType);
- //
- // }
- //
- //
- // if (frameinfo->Data[1] == 5)
- // {
- // int nPressThickness = frameinfo->Data[2];
- // int nPressValue = frameinfo->Data[3];
- // mLog::Info("recv:nPressThickness={$},nPressValue={$}", nPressThickness, nPressValue);
- //
- // }
- //
- // if (frameinfo->Data[1] == 6)
- // {
- // int nCollLong = frameinfo->Data[2] * 256 + frameinfo->Data[3];
- // int nCollCross = frameinfo->Data[4] * 256 + frameinfo->Data[5];
- // mLog::Info("recv:nCollLong={$},nCollCross={$}", nCollLong, nCollCross);
- //
- // //port->m_pTableCtrl->MSGControl(port->m_pTableCtrl->m_pWnd, ECOM_MSG_RFMC_PARAMOUT, ECOM_MECHCOMP_PA_COLLIMATOR, nCollLong*100 + nCollCross, ECOM_MSG_TYPE_SYNC_NO, ECOM_MSG_TARGETHANDLE_RFOC);
- // //port->m_pTableCtrl->MSGControl(port->m_pTableCtrl->m_pWnd, ECOM_MSG_RFMC_PARAMOUT, ECOM_MECHCOMP_PA_COLLIMATOR, nCollLong*100 + nCollCross, ECOM_MSG_TYPE_SYNC_NO, ECOM_MSG_TARGETHANDLE_RFHARDWARE);
- //
- // }
- //
- // if (frameinfo->Data[1] == 7)
- // {
- // int nFilter = frameinfo->Data[2];
- // //port->m_pTableCtrl->m_nFilterSet = nFilter;
- // mLog::Info("recv:Filter is {$},(1:Mo,2Rh)", nFilter);
- //
- // //port->m_pTableCtrl->MSGControl(port->m_pTableCtrl->m_pWnd, ECOM_MSG_RFMC_PARAMOUT, ECOM_MECHCOMP_PA_FILTER, port->m_pTableCtrl->m_nFilterSet, ECOM_MSG_TYPE_SYNC_NO, ECOM_MSG_TARGETHANDLE_RFOC);
- // //port->m_pTableCtrl->MSGControl(port->m_pTableCtrl->m_pWnd, ECOM_MSG_RFMC_PARAMOUT, ECOM_MECHCOMP_PA_FILTER, port->m_pTableCtrl->m_nFilterSet, ECOM_MSG_TYPE_SYNC_NO, ECOM_MSG_TARGETHANDLE_RFHARDWARE);
- //
- // }
- //
- // if (frameinfo->Data[1] == 12)
- // {
- // if (frameinfo->Data[2] == 0)
- // {
- // mLog::Info("recv 无错误");
- // }
- //
- // if (frameinfo->Data[2] == 1)
- // {
- // mLog::Info("recv:压迫其初始化未到位 ");
- // }
- //
- // if (frameinfo->Data[2] == 2)
- // {
- // mLog::Info("recv 压迫器上限位错误");
- // }
- //
- // if (frameinfo->Data[2] == 3)
- // {
- // mLog::Info("recv 过压错误");
- // }
- //
- // if (frameinfo->Data[2] == 4)
- // {
- // mLog::Info("recv 过流错误");
- // }
- //
- // if (frameinfo->Data[2] == 5)
- // {
- // mLog::Info("recv 自动释放未完成");
- // }
- //
- // if (frameinfo->Data[2] == 6)
- // {
- // mLog::Info("recv 限束器初始化成功");
- // }
- //
- // if (frameinfo->Data[2] == 7)
- // {
- // mLog::Info("recv 压迫释放完成");
- // }
- // }
- //
- // if (frameinfo->Data[1]==0x19)
- // {
- // int nPressBoardType = frameinfo->Data[2];
- // mLog::Info("recv:nPressBoardType={$}", nPressBoardType);
- // }
- //
- // }
- //
- //#pragma endregion
- // }
- // else if (frameinfo->ID == 0x485)//振动栅节点
- // {
- //#pragma region ID485
- //
- // //0x485 故障报文 4 3 故障状态:0.正确 ;1.初始化错误; 振栅板发送给图像
- // if (frameinfo->Data[0] ==4)
- // {
- // if (frameinfo->Data[1] == 3)
- // {
- // int nStatus = frameinfo->Data[2];
- // mLog::Info("recv:Grid Status={$}", nStatus);
- // }
- //
- // }
- //#pragma endregion
- //
- // }
- //
- // }
- // }
- // return 0;
- //}
- //
- //
- //#if 0
- //
- ////not use
- //
- //bool CCANPort::CAN_NoDelayTransmit(CString strData, CString strFrmID, byte RomoteFlag, byte ExternFlag, byte type)
- //{
- // VCI_CAN_OBJ frameinfo;
- // char szFrameID[9];
- // BYTE FrameID[4] = { 0,0,0,0 };
- // memset(szFrameID, '0', 9);
- // unsigned char Data[8];
- // char szData[25];
- // BYTE datalen = 0;
- // //帧ID占4个字节,用16进制表示:0x21A09878,字符表示长度为8,
- // if (strFrmID.GetLength() > 8)
- // {
- // return FALSE;
- // }
- // //发送数据,16进制表示,每个数无空格, 即:"01A1098070000000",最多16个数
- // if (strData.GetLength() > 16)
- // {
- // return FALSE;
- // }
- // //发送帧类型:标准,扩展
- // if (ExternFlag == 0)//标准帧
- // {
- // if (strData.GetLength() % 2 == 1)//。。。?
- // {
- // return false;
- // }
- // }
- // //copy 到低位
- // memcpy(&szFrameID[8 - strFrmID.GetLength()], (LPCTSTR)strFrmID, strFrmID.GetLength());
- // strtodata((unsigned char*)szFrameID, FrameID, 4, 0);
- // //发送数据是16进制表示,每个数据之间有空格
- // datalen = (strData.GetLength()) / 2;//实际个数
- // strcpy(szData, (LPCTSTR)strData);
- // strtodata((unsigned char*)szData, Data, datalen, 0);
- //
- // frameinfo.DataLen = datalen;
- // memcpy(&frameinfo.Data, Data, datalen);
- //
- // frameinfo.RemoteFlag = RomoteFlag;//数据帧/远程帧
- // frameinfo.ExternFlag = ExternFlag;
- //
- // frameinfo.TimeFlag = 0;
- // frameinfo.TimeStamp = 0;
- //
- // //帧类型约束帧ID的实际占有位数
- // if (frameinfo.ExternFlag == 1)
- // {
- // frameinfo.ID = ((DWORD)FrameID[0] << 24) + ((DWORD)FrameID[1] << 16) + ((DWORD)FrameID[2] << 8) +
- // ((DWORD)FrameID[3]);
- // }
- // else
- // {
- // frameinfo.ID = ((DWORD)FrameID[2] << 8) + ((DWORD)FrameID[3]);
- // }
- // frameinfo.SendType = type;//发送格式:单发。。
- //
- // //给文件内写数据!
- // //fprintf(m_p50RF_RAD->fp,strData+"\n");
- //
- // //if(1 == VCI_Transmit(m_devtype,m_devind,m_cannum,&frameinfo,1))
- // if (1 == m_pCANEx->Transmit(m_devind, m_cannum, &frameinfo, 1))
- // return TRUE;
- // else
- // {
- // return FALSE;
- // }
- //}
- //
- //bool CCANPort::CAN_Read(bool& bRemoteFlag, bool& bExternFlag, CString strFrmID, CString& strData, CString& strTimeStamp)
- //{
- //
- // VCI_CAN_OBJ frameinfo[50];
- // VCI_ERR_INFO errinfo;
- // int len = 1;
- // int i = 0;
- // CString str, tmpstr;
- // strTimeStamp = "";
- //
- // len = m_pCANEx->Receive(m_devind, m_cannum, frameinfo, 50, 200);
- // if (len <= 0)
- // {
- // m_pCANEx->ReadErrInfo(m_devind, m_cannum, &errinfo);
- // return false;
- // }
- // else
- // {
- // for (i = 0; i < len; i++)
- // {
- // if (frameinfo[i].TimeFlag == 1)
- // strTimeStamp.Format("%08x ", frameinfo[i].TimeStamp);
- //
- // strFrmID.Format("%08x ", frameinfo[i].ID);
- //
- // bRemoteFlag = (frameinfo[i].RemoteFlag == 1);
- //
- // bExternFlag = (frameinfo[i].ExternFlag == 1);
- //
- // if (frameinfo[i].RemoteFlag == 0)
- // {
- // if (frameinfo[i].DataLen > 8)
- // frameinfo[i].DataLen = 8;
- // for (int j = 0; j < frameinfo[i].DataLen; j++)
- // {
- // tmpstr.Format("%02x ", frameinfo[i].Data[j]);
- // strData += tmpstr;
- // }
- // }
- // }
- //
- // }
- // return true;
- //
- //}
- //
- //void CCANPort::CAN_GetBordInfo(DWORD& DeviceType, DWORD& DeviceInd)
- //{
- //
- //}
- //#endif // 0
|