100分,一个串口接收的有关问题
100分求助,一个串口接收的问题
- C/C++ code
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); }