100分求助,一个串口接收的问题
bool m_OpenStatus;bool m_CloseStatus;bool m_OneKeyDown;bool m_OneKeyCancel;bool m_Expose;bool m_ExposeComplete;CString m_KV;CString m_MA;CString m_S;CString strTemp = "";extern "C"__declspec(dllexport)void SetZoneBuffer(){ strTemp ="";}extern "C" __declspec(dllexport)bool GetOpenStatus(){ return m_OpenStatus;}extern "C" __declspec(dllexport)bool GetCloseStatus(){ return m_CloseStatus;}extern "C" __declspec(dllexport)int GetKV(){ return atoi(m_KV);}extern "C" __declspec(dllexport)int GetMA(){ return atoi(m_MA);}extern "C" __declspec(dllexport)int GetS(){ return atoi(m_S);}extern "C" __declspec(dllexport)bool GetOneKeyDown(){ return m_OneKeyDown;}extern "C" __declspec(dllexport)bool GetOneKeyCancel(){ return m_OneKeyCancel;}extern "C" __declspec(dllexport)bool GetExpose(){ return m_Expose;}extern "C" __declspec(dllexport)bool GetExposeComplete(){ return m_ExposeComplete;}void ReveveChar(WPARAM data, LPARAM port){ char str[1] = "";// sprintf(str,"%c",data); strTemp += str; if (strTemp.Find("POK")) { m_OpenStatus = true; } else { m_OpenStatus = false; } if (strTemp.Find("POF")) { m_CloseStatus = true; } else { m_CloseStatus = false; } if (strTemp.Find("KV") && strTemp.GetLength()>=5) { m_KV = strTemp.Left(5); m_KV = m_KV.Right(2); } if (strTemp.Find("MA") && strTemp.GetLength()>=11) { m_MA = strTemp.Left(11); m_MA = m_MA.Right(2); } if (strTemp.Find("MX") && strTemp.GetLength()==17) { // m_S = strTemp.Left(11); m_S = m_S.Right(2); } if (strTemp.Find("PRY")) { m_OneKeyDown=true; } else { m_OneKeyDown=false; } if (strTemp.Find("PRN")) { m_OneKeyCancel= true; } else { m_OneKeyCancel = false; } if (strTemp.Find("XRY")) { m_Expose = true; } else { m_Expose = false; } if (strTemp.Find("XRY")) { m_Expose = true; } else { m_Expose = false; } if (strTemp.Find("XRN")) { m_ExposeComplete= true; } else { m_ExposeComplete = false; } }extern "C" __declspec(dllexport) void OpenMachnie(){ if (Init(9,9600,'N',8,1)) { char pon [4]= {'P','O','N',13}; SendData(&pon[0],sizeof(char)*1); Sleep(20); SendData(&pon[1],sizeof(char)*1); Sleep(20); SendData(&pon[2],sizeof(char)*1); Sleep(20); SendData(&pon[3],sizeof(char)*1); Sleep(20); char rfr [4]= {'R','F','R',13}; SendData(&rfr[0],sizeof(char)*1); Sleep(20); SendData(&rfr[1],sizeof(char)*1); Sleep(20); SendData(&rfr[2],sizeof(char)*1); Sleep(20); SendData(&rfr[3],sizeof(char)*1); SetReceiveFuntion(&ReveveChar); } else { AfxMessageBox("初始化失败\r\n 1、串口被占用\r\n 2、检查COM9是否选择正确"); } }extern "C" __declspec(dllexport) void CloseMachine(){ char pof [4]= {'P','O','F',13}; SendData(&pof[0],sizeof(char)*1); Sleep(20); SendData(&pof[1],sizeof(char)*1); Sleep(20); SendData(&pof[2],sizeof(char)*1); Sleep(20); SendData(&pof[3],sizeof(char)*1);}extern "C" __declspec(dllexport) void AddKV(){ char addkv [4]= {'K','V','+',13}; SendData(&addkv[0],sizeof(char)*1); Sleep(20); SendData(&addkv[1],sizeof(char)*1); Sleep(20); SendData(&addkv[2],sizeof(char)*1); Sleep(20); SendData(&addkv[3],sizeof(char)*1);}extern "C" __declspec(dllexport) void SubtractKV(){ char subtractkv [4]= {'K','V','-',13}; SendData(&subtractkv[0],sizeof(char)*1); Sleep(20); SendData(&subtractkv[1],sizeof(char)*1); Sleep(20); SendData(&subtractkv[2],sizeof(char)*1); Sleep(20); SendData(&subtractkv[3],sizeof(char)*1);}extern "C" __declspec(dllexport) void AddMA(){ char addma [4]= {'M','A','+',13}; SendData(&addma[0],sizeof(char)*1); Sleep(20); SendData(&addma[1],sizeof(char)*1); Sleep(20); SendData(&addma[2],sizeof(char)*1); Sleep(20); SendData(&addma[3],sizeof(char)*1);}extern "C" __declspec(dllexport) void SubtractMA(){ char subtractma [4]= {'M','A','-',13}; SendData(&subtractma[0],sizeof(char)*1); Sleep(20); SendData(&subtractma[1],sizeof(char)*1); Sleep(20); SendData(&subtractma[2],sizeof(char)*1); Sleep(20); SendData(&subtractma[3],sizeof(char)*1);}extern "C" __declspec(dllexport) void AddS(){ char adds [4]= {'M','X','+',13}; SendData(&adds[0],sizeof(char)*1); Sleep(20); SendData(&adds[1],sizeof(char)*1); Sleep(20); SendData(&adds[2],sizeof(char)*1); Sleep(20); SendData(&adds[2],sizeof(char)*1); Sleep(20); SendData(&adds[3],sizeof(char)*1);}extern "C" __declspec(dllexport) void SubtractS(){ char subtracts [4]= {'M','X','-',13}; SendData(&subtracts[0],sizeof(char)*1); Sleep(20); SendData(&subtracts[1],sizeof(char)*1); Sleep(20); SendData(&subtracts[2],sizeof(char)*1); Sleep(20); SendData(&subtracts[2],sizeof(char)*1); Sleep(20); SendData(&subtracts[3],sizeof(char)*1);}