cm+.cpp 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849
  1. #include "StdAfx.h"
  2. #include ".\cm+.h"
  3. kongtiao_cm::kongtiao_cm(char *szPath,char *szIniName,int nCommPort, int nAddr,int nRate, int nDataBit,int nStopBit, int nParity,int nInterval)
  4. {
  5. #if IS_USE_READMSG_CS
  6. InitializeCriticalSection(&m_csReadMsg);
  7. #endif
  8. MTVERIFY(m_hSemComm = CreateEvent(NULL, TRUE, TRUE, 0));
  9. for (int i = 0; i < MAX_ADDR ; i++)
  10. {
  11. memset(m_sz41Msg[i], 0, sizeof(m_sz41Msg[i]));
  12. memset(m_szE1Msg[i], 0, sizeof(m_szE1Msg[i]));
  13. memset(m_szE2Msg[i], 0, sizeof(m_szE2Msg[i]));
  14. memset(m_szE3Msg[i], 0, sizeof(m_szE3Msg[i]));
  15. memset(m_sz43Msg[i], 0, sizeof(m_sz43Msg[i]));
  16. memset(m_sz44Msg[i], 0, sizeof(m_sz44Msg[i]));
  17. m_dwOnlineTick[i] = 0;
  18. m_devOnline[i] = TRUE;
  19. }
  20. }
  21. kongtiao_cm::~kongtiao_cm(void)
  22. {
  23. #if IS_USE_READMSG_CS
  24. DeleteCriticalSection(& m_csReadMsg);
  25. #endif
  26. MTVERIFY(CloseHandle(m_hSemComm));
  27. CloseComm();
  28. }
  29. BOOL kongtiao_cm::OpenUPSComm(int nCommPort, int nAddr, int nRate, int nDataBit, int nStopBit, int nParity, int nInterval)
  30. {
  31. BOOL bResult = FALSE;
  32. //LOG4C((LOG_NOTICE,"->OpenUPSComm"));
  33. bResult = OpenComm( nCommPort, nAddr, nRate, nDataBit, nStopBit, nParity, nInterval );
  34. return bResult;
  35. }
  36. int kongtiao_cm::GetIniInfo(char *szPath,char *szIniName,char *szCmd,char *IniSendCMD, int &IniSendlen, char *nType,int &nIndex,int &nLen)
  37. {
  38. CHAR szFile[MAX_PATH + 1] = "";
  39. wsprintf(szFile, "%s\\config\\%s", szPath, szIniName);
  40. TRACE("szFile =%s\n",szFile);
  41. IniSendlen = GetPrivateProfileString(szCmd, "SendCmd", "", IniSendCMD, 10, szFile); // 返回的字符串是以\0结束的;
  42. GetPrivateProfileString(szCmd, "type", "", nType, 10, szFile);
  43. nType[strlen(nType)] = '\0';
  44. nIndex = GetPrivateProfileInt(szCmd, "Index", 0, szFile);
  45. nLen = GetPrivateProfileInt(szCmd, "Len", 0, szFile);
  46. return 0;
  47. }
  48. int kongtiao_cm::SendReadRequest(
  49. char *szPath,
  50. char *szIniName,
  51. int nCommPort,
  52. int nAddr,
  53. char *szCmd,
  54. char *szMsg,
  55. int nReversed1,
  56. int nReversed2,
  57. int nReversed3,
  58. int nReversed4,
  59. int nReversed5,
  60. float fReversed1,
  61. float fReversed2,
  62. float fReversed3,
  63. char *szReversed1,
  64. char *szReversed2,
  65. char *szReversed3,
  66. char *szReversed4,
  67. char *szReversed5 )
  68. {
  69. //LOG4C((LOG_NOTICE,"->SendReadRequest"));
  70. CCommProcess *pComm = FindComm(nCommPort);
  71. if( pComm == NULL ) return -1;
  72. int nRet(-1);
  73. int nIndex(0), nLen(0), IniSendlen(0);
  74. char IniSendCMD[MAX_CMD] = {0}, szDataType[CMD_TYPE] = {0};
  75. GetIniInfo(szPath,szIniName,szCmd,IniSendCMD,IniSendlen,szDataType,nIndex,nLen);
  76. if (
  77. (strlen(m_sz41Msg[nAddr -1]) == 0 &&
  78. (
  79. strcmp(szCmd, "cmd-1") ==0 || strcmp(szCmd, "cmd-2") ==0 || strcmp(szCmd, "cmd-3") ==0 ||
  80. strcmp(szCmd, "cmd-4") ==0 || strcmp(szCmd, "cmd-5") ==0 || strcmp(szCmd, "cmd-6") ==0 ||
  81. strcmp(szCmd, "cmd-7") ==0 || strcmp(szCmd, "cmd-8") ==0 || strcmp(szCmd, "cmd-9") ==0 ||
  82. strcmp(szCmd, "cmd-10") ==0 || strcmp(szCmd, "cmd-11") ==0 || strcmp(szCmd, "cmd-12") ==0 ||
  83. strcmp(szCmd, "cmd-13") ==0 || strcmp(szCmd, "cmd-14") ==0 || strcmp(szCmd, "cmd-15") ==0
  84. )||
  85. ( strlen(m_szE1Msg[nAddr -1]) == 0 &&
  86. (
  87. strcmp(szCmd, "cmd-16") ==0 || strcmp(szCmd, "cmd-17") ==0 || strcmp(szCmd, "cmd-18") ==0 ||
  88. strcmp(szCmd, "cmd-19") ==0 || strcmp(szCmd, "cmd-20") ==0 || strcmp(szCmd, "cmd-21") ==0 ||
  89. strcmp(szCmd, "cmd-22") ==0 || strcmp(szCmd, "cmd-23") ==0 || strcmp(szCmd, "cmd-24") ==0 ||
  90. strcmp(szCmd, "cmd-25") ==0 || strcmp(szCmd, "cmd-26") ==0 || strcmp(szCmd, "cmd-27") ==0 ||
  91. strcmp(szCmd, "cmd-28") ==0 || strcmp(szCmd, "cmd-29") ==0 || strcmp(szCmd, "cmd-30") ==0 ||
  92. strcmp(szCmd, "cmd-31") ==0
  93. ) )||
  94. ( strlen(m_szE2Msg[nAddr -1]) == 0 &&
  95. (
  96. strcmp(szCmd, "cmd-32") == 0 ||
  97. strcmp(szCmd, "cmd-33") == 0 || strcmp(szCmd, "cmd-34") == 0 || strcmp(szCmd, "cmd-35") == 0 ||
  98. strcmp(szCmd, "cmd-36") == 0 || strcmp(szCmd, "cmd-37") == 0 || strcmp(szCmd, "cmd-38") == 0 ||
  99. strcmp(szCmd, "cmd-39") == 0 || strcmp(szCmd, "cmd-40") == 0 || strcmp(szCmd, "cmd-41") == 0 ||
  100. strcmp(szCmd, "cmd-42") == 0 || strcmp(szCmd, "cmd-43") == 0 || strcmp(szCmd, "cmd-44") == 0 ||
  101. strcmp(szCmd, "cmd-45") == 0 || strcmp(szCmd, "cmd-46") == 0 || strcmp(szCmd, "cmd-47") == 0 ||
  102. strcmp(szCmd, "cmd-48") == 0 || strcmp(szCmd, "cmd-49") == 0 || strcmp(szCmd, "cmd-50") == 0 ||
  103. strcmp(szCmd, "cmd-51") == 0
  104. )) ||
  105. ( strlen(m_szE3Msg[nAddr -1]) == 0 &&
  106. (
  107. strcmp(szCmd, "cmd-52") == 0 || strcmp(szCmd, "cmd-53") == 0 || strcmp(szCmd, "cmd-54") == 0 ||
  108. strcmp(szCmd, "cmd-55") == 0 || strcmp(szCmd, "cmd-56") == 0 || strcmp(szCmd, "cmd-57") == 0 ||
  109. strcmp(szCmd, "cmd-58") == 0 || strcmp(szCmd, "cmd-59") == 0 || strcmp(szCmd, "cmd-60") == 0 ||
  110. strcmp(szCmd, "cmd-61") == 0
  111. ) ) ||
  112. ( strlen(m_szE7Msg[nAddr -1]) == 0 &&
  113. (
  114. strcmp(szCmd, "cmd-62") ==0 || strcmp(szCmd, "cmd-63") ==0 || strcmp(szCmd, "cmd-64") ==0 ||
  115. strcmp(szCmd, "cmd-65") ==0 || strcmp(szCmd, "cmd-66") ==0 || strcmp(szCmd, "cmd-67") ==0 ||
  116. strcmp(szCmd, "cmd-68") ==0 || strcmp(szCmd, "cmd-69") ==0 || strcmp(szCmd, "cmd-70") ==0
  117. ) ) ||
  118. ( strlen(m_sz43Msg[nAddr -1]) == 0 &&
  119. (
  120. strcmp(szCmd, "cmd-71") ==0 || strcmp(szCmd, "cmd-72") ==0 || strcmp(szCmd, "cmd-73") ==0 ||
  121. strcmp(szCmd, "cmd-74") ==0 || strcmp(szCmd, "cmd-75") ==0 || strcmp(szCmd, "cmd-76") ==0 ||
  122. strcmp(szCmd, "cmd-77") ==0 || strcmp(szCmd, "cmd-78") ==0 || strcmp(szCmd, "cmd-79") ==0 ||
  123. strcmp(szCmd, "cmd-80") ==0 || strcmp(szCmd, "cmd-81") ==0 || strcmp(szCmd, "cmd-82") ==0 ||
  124. strcmp(szCmd, "cmd-83") ==0 || strcmp(szCmd, "cmd-84") ==0 || strcmp(szCmd, "cmd-85") ==0 ||
  125. strcmp(szCmd, "cmd-86") ==0 || strcmp(szCmd, "cmd-87") ==0 || strcmp(szCmd, "cmd-88") ==0 ||
  126. strcmp(szCmd, "cmd-89") ==0 || strcmp(szCmd, "cmd-90") ==0 || strcmp(szCmd, "cmd-91") ==0 ||
  127. strcmp(szCmd, "cmd-92") ==0 || strcmp(szCmd, "cmd-93") ==0 || strcmp(szCmd, "cmd-94") ==0 ||
  128. strcmp(szCmd, "cmd-95") ==0
  129. ) ) ||
  130. ( strlen(m_sz44Msg[nAddr -1]) == 0 &&
  131. (
  132. strcmp(szCmd, "cmd-96") ==0 || strcmp(szCmd, "cmd-97") ==0 || strcmp(szCmd, "cmd-98") ==0 ||
  133. strcmp(szCmd, "cmd-99") ==0 || strcmp(szCmd, "cmd-100") ==0 || strcmp(szCmd, "cmd-101") ==0 ||
  134. strcmp(szCmd, "cmd-102") ==0 || strcmp(szCmd, "cmd-103") ==0 || strcmp(szCmd, "cmd-104") ==0 ||
  135. strcmp(szCmd, "cmd-105") ==0 || strcmp(szCmd, "cmd-106") ==0 || strcmp(szCmd, "cmd-107") ==0 ||
  136. strcmp(szCmd, "cmd-108") ==0 || strcmp(szCmd, "cmd-109") ==0 || strcmp(szCmd, "cmd-110") ==0 ||
  137. strcmp(szCmd, "cmd-111") ==0 || strcmp(szCmd, "cmd-112") ==0 || strcmp(szCmd, "cmd-113") ==0 ||
  138. strcmp(szCmd, "cmd-114") ==0 || strcmp(szCmd, "cmd-115") ==0 || strcmp(szCmd, "cmd-116") ==0 ||
  139. strcmp(szCmd, "cmd-117") ==0 || strcmp(szCmd, "cmd-118") ==0 || strcmp(szCmd, "cmd-119") ==0 ||
  140. strcmp(szCmd, "cmd-120") ==0 || strcmp(szCmd, "cmd-121") ==0 || strcmp(szCmd, "cmd-122") ==0 ||
  141. strcmp(szCmd, "cmd-123") ==0 || strcmp(szCmd, "cmd-124") ==0 || strcmp(szCmd, "cmd-125") ==0 ||
  142. strcmp(szCmd, "cmd-126") ==0 || strcmp(szCmd, "cmd-127") ==0 || strcmp(szCmd, "cmd-128") ==0 ||
  143. strcmp(szCmd, "cmd-129") ==0 || strcmp(szCmd, "cmd-130") ==0 || strcmp(szCmd, "cmd-131") ==0 ||
  144. strcmp(szCmd, "cmd-132") ==0 || strcmp(szCmd, "cmd-133") ==0 || strcmp(szCmd, "cmd-134") ==0 ||
  145. strcmp(szCmd, "cmd-135") ==0 || strcmp(szCmd, "cmd-136") ==0 || strcmp(szCmd, "cmd-137") ==0 ||
  146. strcmp(szCmd, "cmd-138") ==0 || strcmp(szCmd, "cmd-139") ==0 || strcmp(szCmd, "cmd-140") ==0 ||
  147. strcmp(szCmd, "cmd-141") ==0 || strcmp(szCmd, "cmd-142") ==0 || strcmp(szCmd, "cmd-143") ==0 ||
  148. strcmp(szCmd, "cmd-144") ==0 || strcmp(szCmd, "cmd-145") ==0 || strcmp(szCmd, "cmd-146") ==0 ||
  149. strcmp(szCmd, "cmd-147") ==0 || strcmp(szCmd, "cmd-148") ==0 || strcmp(szCmd, "cmd-149") ==0 ||
  150. strcmp(szCmd, "cmd-150") ==0 || strcmp(szCmd, "cmd-151") ==0 || strcmp(szCmd, "cmd-152") ==0 ||
  151. strcmp(szCmd, "cmd-153") ==0 || strcmp(szCmd, "cmd-154") ==0 || strcmp(szCmd, "cmd-155") ==0 ||
  152. strcmp(szCmd, "cmd-156") ==0 || strcmp(szCmd, "cmd-157") ==0 || strcmp(szCmd, "cmd-158") ==0 ||
  153. strcmp(szCmd, "cmd-159") ==0 || strcmp(szCmd, "cmd-160") ==0 || strcmp(szCmd, "cmd-161") ==0 ||
  154. strcmp(szCmd, "cmd-162") ==0 || strcmp(szCmd, "cmd-163") ==0 || strcmp(szCmd, "cmd-164") ==0 ||
  155. strcmp(szCmd, "cmd-165") ==0 || strcmp(szCmd, "cmd-166") ==0 || strcmp(szCmd, "cmd-167") ==0 ||
  156. strcmp(szCmd, "cmd-168") ==0 || strcmp(szCmd, "cmd-169") ==0 || strcmp(szCmd, "cmd-170") ==0 ||
  157. strcmp(szCmd, "cmd-171") ==0 || strcmp(szCmd, "cmd-172") ==0 || strcmp(szCmd, "cmd-173") ==0 ||
  158. strcmp(szCmd, "cmd-174") ==0 || strcmp(szCmd, "cmd-175") ==0 || strcmp(szCmd, "cmd-176") ==0 ||
  159. strcmp(szCmd, "cmd-177") ==0 || strcmp(szCmd, "cmd-178") ==0 || strcmp(szCmd, "cmd-179") ==0 ||
  160. strcmp(szCmd, "cmd-180") ==0 || strcmp(szCmd, "cmd-181") ==0
  161. ) ) ||
  162. strcmp(szCmd, "cmd-1") == 0 || strcmp(szCmd, "cmd-16") == 0 || strcmp(szCmd, "cmd-32") == 0 ||
  163. strcmp(szCmd, "cmd-52") == 0 || strcmp(szCmd, "cmd-62") == 0 || strcmp(szCmd, "cmd-71") == 0 ||
  164. strcmp(szCmd, "cmd-96") == 0
  165. )
  166. )
  167. {
  168. nRet = GetDeviceParam(nAddr ,pComm, IniSendCMD,IniSendlen, szCmd );
  169. if( nRet != 0 )
  170. return nRet;
  171. }
  172. if( GetTickCount() - m_dwOnlineTick[nAddr -1] > 60 * 1000 && m_dwOnlineTick[nAddr -1] > 0 ) {
  173. m_devOnline[nAddr -1] = FALSE;
  174. }
  175. else if( GetTickCount() - m_dwOnlineTick[nAddr -1] < 60 * 1000 && m_dwOnlineTick[nAddr -1] > 0 ) {
  176. m_devOnline[nAddr -1] = TRUE;
  177. }
  178. if( m_devOnline[nAddr -1] == FALSE ) {
  179. return -1;
  180. }
  181. ///LOG4C((LOG_NOTICE,"->GetUPS_42Msg"));
  182. nRet = GetUPS_41Msg(nAddr, szCmd, szMsg, nIndex, nLen, szDataType);
  183. nRet = GetUPS_E1Msg(nAddr, szCmd, szMsg, nIndex, nLen, szDataType);
  184. nRet = GetUPS_E2Msg(nAddr, szCmd, szMsg, nIndex, nLen, szDataType);
  185. nRet = GetUPS_E3Msg(nAddr, szCmd, szMsg, nIndex, nLen, szDataType);
  186. nRet = GetUPS_E7Msg(nAddr, szCmd, szMsg, nIndex, nLen, szDataType);
  187. nRet = GetUPS_43Msg(nAddr, szCmd, szMsg, nIndex, nLen, szDataType);
  188. nRet = GetUPS_44Msg(nAddr, szCmd, szMsg, nIndex, nLen, szDataType);
  189. LOG4C((LOG_NOTICE,"nRet = %d,cmd = %s,值 = %s",nRet,szCmd,szMsg));
  190. return nRet;
  191. }
  192. // 发送写设置;
  193. int kongtiao_cm::SendSetReuest(
  194. char *szPath,
  195. char *szIniName,
  196. int nCommPort,
  197. int nAddr,
  198. char *szCmd,
  199. char *szMsg,
  200. int nReversed1,
  201. int nReversed2,
  202. int nReversed3,
  203. int nReversed4,
  204. int nReversed5,
  205. float fReversed1,
  206. float fReversed2,
  207. float fReversed3,
  208. char *szReversed1,
  209. char *szReversed2,
  210. char *szReversed3,
  211. char *szReversed4,
  212. char *szReversed5
  213. )
  214. {
  215. return 0;
  216. }
  217. int kongtiao_cm::GetDeviceParam(int naddr, CCommProcess *pComm,char *IniSendCMD,const int &IniSendlen ,char *szCmd)
  218. {
  219. //LOG4C((LOG_NOTICE,"->GetDeviceParam"));
  220. int nRet(-1);
  221. nRet = Send_ReadDeviceData(naddr, pComm, IniSendCMD, IniSendlen);
  222. if( nRet != 0 ) {
  223. return nRet;
  224. }
  225. nRet = Recv_ReadDeviceData(naddr, pComm, szCmd);
  226. return nRet;
  227. }
  228. int kongtiao_cm::Send_ReadDeviceData(int nAddr,CCommProcess *pComm,const char *IniSendCMD,const int &IniSendlen)
  229. {
  230. #if DEBUG_UHA3R0200L
  231. //LOG4C((LOG_NOTICE,"->Send_ReadDeviceData"));
  232. BYTE szSendMSG[32] = {0};
  233. // 对数组进行赋值;
  234. szSendMSG[0] = 0x7E;
  235. szSendMSG[1] = 0x31;
  236. szSendMSG[2] = 0x30;
  237. szSendMSG[3] = ByteToAscii( (nAddr >> 4) & 0x0F);
  238. szSendMSG[4] = ByteToAscii( nAddr & 0x0F);
  239. szSendMSG[5] = 0x32;
  240. szSendMSG[6] = 0x41;
  241. memcpy(szSendMSG + 7, IniSendCMD, IniSendlen);
  242. // 进行lengcheck判断;
  243. if (
  244. strcmp(IniSendCMD,"41") == 0 || strcmp(IniSendCMD,"E3") == 0 ||
  245. strcmp(IniSendCMD,"43") == 0 || strcmp(IniSendCMD,"44") == 0
  246. ) // LENID = 00;
  247. {
  248. BYTE szCheck[5] = {0};
  249. memcpy(szSendMSG + 9,"0000",4); // LENID;
  250. GetEmersonCheck((char *)szSendMSG, (char*)szCheck);
  251. memcpy(szSendMSG + 13,szCheck,4);
  252. szSendMSG[strlen((char*)szSendMSG)] = 0x0D;
  253. }
  254. else if ( strcmp(IniSendCMD,"E7") == 0 ) // LENID = 04;
  255. {
  256. BYTE szCheck[5] = {0};
  257. memcpy(szSendMSG + 9, "C004", 4); // LENID;
  258. memcpy(szSendMSG + 13, "0100", 4); // DATAF;
  259. GetEmersonCheck((char *)szSendMSG, (char*)szCheck);
  260. memcpy(szSendMSG + 17,szCheck,4);
  261. szSendMSG[strlen((char*)szSendMSG)] = 0x0D;
  262. }
  263. else if ( strcmp(IniSendCMD,"E1") == 0 || strcmp(IniSendCMD,"E2") == 0) // LENID = 02;
  264. {
  265. BYTE szCheck[5] = {0};
  266. memcpy(szSendMSG + 9, "E002", 4); // LENID;
  267. memcpy(szSendMSG + 13, "00", 2); // DATAF;
  268. GetEmersonCheck((char *)szSendMSG, (char*)szCheck);
  269. memcpy(szSendMSG + 15,szCheck,4);
  270. szSendMSG[strlen((char*)szSendMSG)] = 0x0D;
  271. }
  272. int iLen = strlen((char*)szSendMSG);
  273. if (WaitForSingleObject(m_hSemComm,0) == WAIT_OBJECT_0 ) {
  274. ResetEvent(m_hSemComm);
  275. int nResult = pComm->Write(szSendMSG, iLen);
  276. if (nResult != iLen){
  277. SetEvent(m_hSemComm);
  278. return EER_CODE_COM_REGNUM;
  279. }
  280. }
  281. else{
  282. return ERR_CODE_COM_BUSY;
  283. }
  284. #endif
  285. return 0;
  286. }
  287. int kongtiao_cm::Recv_ReadDeviceData(int nAddr,CCommProcess *pComm,char *szCmd)
  288. {
  289. #if DEBUG_UHA3R0200L
  290. //LOG4C((LOG_NOTICE,"->Recv_ReadDeviceData"));
  291. int nProcessLen(0),nReadLen(0);
  292. char *pBuff = new char[MAX_RECE_MSG];
  293. memset(pBuff, 0 , MAX_RECE_MSG);
  294. nReadLen = pComm->Read((BYTE *)pBuff,MAX_RECE_MSG);
  295. int nRet = RtnCheck(pBuff, nReadLen);
  296. if (nRet != 0)
  297. {
  298. SetEvent( m_hSemComm );
  299. if( pBuff != NULL)
  300. {
  301. delete[] pBuff;
  302. pBuff = NULL;
  303. }
  304. LOG4C((LOG_NOTICE,"->RTN校验出错:%d",nRet));
  305. return nRet; //RTN校验出错
  306. }
  307. if (nReadLen <= 0){
  308. SetEvent(m_hSemComm);
  309. if (pBuff != NULL) {
  310. delete [] pBuff;
  311. pBuff = NULL;
  312. }
  313. LOG4C((LOG_NOTICE,"->串口没有读到数据"));
  314. return ERR_CODE_COM_READ_NO_DATA;
  315. } //长度校验出错 ;
  316. //LOG4C((LOG_NOTICE,"->**0**"));
  317. CopyUPS_41_Msg(nAddr, szCmd, pBuff);
  318. CopyUPS_E1_Msg(nAddr, szCmd, pBuff);
  319. CopyUPS_E2_Msg(nAddr, szCmd, pBuff);
  320. CopyUPS_E3_Msg(nAddr, szCmd, pBuff);
  321. CopyUPS_E7_Msg(nAddr, szCmd, pBuff);
  322. CopyUPS_43_Msg(nAddr, szCmd, pBuff);
  323. CopyUPS_44_Msg(nAddr, szCmd, pBuff);
  324. //LOG4C((LOG_NOTICE,"->**1**"));
  325. m_dwOnlineTick[nAddr -1] = GetTickCount();
  326. SetEvent( m_hSemComm );
  327. if( pBuff != NULL) {
  328. delete[] pBuff;
  329. pBuff = NULL;
  330. }
  331. #else
  332. SimulationCommData(nAddr);
  333. #endif
  334. return 0;
  335. }
  336. void kongtiao_cm::CopyUPS_41_Msg( int nAddr, char *szCmd, char *pBuffer)
  337. {
  338. if (
  339. strcmp(szCmd, "cmd-1") ==0 || strcmp(szCmd, "cmd-2") ==0 || strcmp(szCmd, "cmd-3") ==0 ||
  340. strcmp(szCmd, "cmd-4") ==0 || strcmp(szCmd, "cmd-5") ==0 || strcmp(szCmd, "cmd-6") ==0 ||
  341. strcmp(szCmd, "cmd-7") ==0 || strcmp(szCmd, "cmd-8") ==0 || strcmp(szCmd, "cmd-9") ==0 ||
  342. strcmp(szCmd, "cmd-10") ==0 || strcmp(szCmd, "cmd-11") ==0 || strcmp(szCmd, "cmd-12") ==0 ||
  343. strcmp(szCmd, "cmd-13") ==0 || strcmp(szCmd, "cmd-14") ==0 || strcmp(szCmd, "cmd-15") ==0
  344. )
  345. {
  346. #if IS_USE_READMSG_CS
  347. EnterCriticalSection(&m_csReadMsg);
  348. #endif
  349. memcpy(m_sz41Msg[nAddr -1], pBuffer, sizeof(m_sz41Msg[nAddr -1]));
  350. #if IS_USE_READMSG_CS
  351. LeaveCriticalSection(&m_csReadMsg);
  352. #endif
  353. }
  354. }
  355. void kongtiao_cm::CopyUPS_E1_Msg( int nAddr, char *szCmd, char *pBuffer)
  356. {
  357. if (
  358. strcmp(szCmd, "cmd-16") ==0 || strcmp(szCmd, "cmd-17") ==0 || strcmp(szCmd, "cmd-18") ==0 ||
  359. strcmp(szCmd, "cmd-19") ==0 || strcmp(szCmd, "cmd-20") ==0 || strcmp(szCmd, "cmd-21") ==0 ||
  360. strcmp(szCmd, "cmd-22") ==0 || strcmp(szCmd, "cmd-23") ==0 || strcmp(szCmd, "cmd-24") ==0 ||
  361. strcmp(szCmd, "cmd-25") ==0 || strcmp(szCmd, "cmd-26") ==0 || strcmp(szCmd, "cmd-27") ==0 ||
  362. strcmp(szCmd, "cmd-28") ==0 || strcmp(szCmd, "cmd-29") ==0 || strcmp(szCmd, "cmd-30") ==0 ||
  363. strcmp(szCmd, "cmd-31") ==0
  364. )
  365. {
  366. #if IS_USE_READMSG_CS
  367. EnterCriticalSection(&m_csReadMsg);
  368. #endif
  369. memcpy(m_szE1Msg[nAddr -1], pBuffer, sizeof(m_szE1Msg[nAddr -1]));
  370. #if IS_USE_READMSG_CS
  371. LeaveCriticalSection(&m_csReadMsg);
  372. #endif
  373. }
  374. }
  375. void kongtiao_cm::CopyUPS_E2_Msg( int nAddr, char *szCmd, char *pBuffer)
  376. {
  377. if (
  378. strcmp(szCmd, "cmd-32") == 0 ||
  379. strcmp(szCmd, "cmd-33") == 0 || strcmp(szCmd, "cmd-34") == 0 || strcmp(szCmd, "cmd-35") == 0 ||
  380. strcmp(szCmd, "cmd-36") == 0 || strcmp(szCmd, "cmd-37") == 0 || strcmp(szCmd, "cmd-38") == 0 ||
  381. strcmp(szCmd, "cmd-39") == 0 || strcmp(szCmd, "cmd-40") == 0 || strcmp(szCmd, "cmd-41") == 0 ||
  382. strcmp(szCmd, "cmd-42") == 0 || strcmp(szCmd, "cmd-43") == 0 || strcmp(szCmd, "cmd-44") == 0 ||
  383. strcmp(szCmd, "cmd-45") == 0 || strcmp(szCmd, "cmd-46") == 0 || strcmp(szCmd, "cmd-47") == 0 ||
  384. strcmp(szCmd, "cmd-48") == 0 || strcmp(szCmd, "cmd-49") == 0 || strcmp(szCmd, "cmd-50") == 0 ||
  385. strcmp(szCmd, "cmd-51") == 0
  386. )
  387. {
  388. #if IS_USE_READMSG_CS
  389. EnterCriticalSection(&m_csReadMsg);
  390. #endif
  391. memcpy(m_szE2Msg[nAddr -1], pBuffer, sizeof(m_szE2Msg[nAddr -1]));
  392. #if IS_USE_READMSG_CS
  393. LeaveCriticalSection(&m_csReadMsg);
  394. #endif
  395. }
  396. }
  397. void kongtiao_cm::CopyUPS_E3_Msg( int nAddr, char *szCmd, char *pBuffer)
  398. {
  399. if (
  400. strcmp(szCmd, "cmd-52") == 0 || strcmp(szCmd, "cmd-53") == 0 || strcmp(szCmd, "cmd-54") == 0 ||
  401. strcmp(szCmd, "cmd-55") == 0 || strcmp(szCmd, "cmd-56") == 0 || strcmp(szCmd, "cmd-57") == 0 ||
  402. strcmp(szCmd, "cmd-58") == 0 || strcmp(szCmd, "cmd-59") == 0 || strcmp(szCmd, "cmd-60") == 0 ||
  403. strcmp(szCmd, "cmd-61") == 0
  404. )
  405. {
  406. #if IS_USE_READMSG_CS
  407. EnterCriticalSection(&m_csReadMsg);
  408. #endif
  409. memcpy(m_szE3Msg[nAddr -1], pBuffer, sizeof(m_szE3Msg[nAddr -1]));
  410. #if IS_USE_READMSG_CS
  411. LeaveCriticalSection(&m_csReadMsg);
  412. #endif
  413. }
  414. }
  415. void kongtiao_cm::CopyUPS_E7_Msg( int nAddr, char *szCmd, char *pBuffer)
  416. {
  417. if (
  418. strcmp(szCmd, "cmd-62") ==0 || strcmp(szCmd, "cmd-63") ==0 || strcmp(szCmd, "cmd-64") ==0 ||
  419. strcmp(szCmd, "cmd-65") ==0 || strcmp(szCmd, "cmd-66") ==0 || strcmp(szCmd, "cmd-67") ==0 ||
  420. strcmp(szCmd, "cmd-68") ==0 || strcmp(szCmd, "cmd-69") ==0 || strcmp(szCmd, "cmd-70") ==0
  421. )
  422. {
  423. #if IS_USE_READMSG_CS
  424. EnterCriticalSection(&m_csReadMsg);
  425. #endif
  426. memcpy(m_szE7Msg[nAddr -1], pBuffer, sizeof(m_szE7Msg[nAddr -1]));
  427. #if IS_USE_READMSG_CS
  428. LeaveCriticalSection(&m_csReadMsg);
  429. #endif
  430. }
  431. }
  432. void kongtiao_cm::CopyUPS_43_Msg( int nAddr, char *szCmd, char *pBuffer)
  433. {
  434. if (
  435. strcmp(szCmd, "cmd-71") ==0 || strcmp(szCmd, "cmd-72") ==0 || strcmp(szCmd, "cmd-73") ==0 ||
  436. strcmp(szCmd, "cmd-74") ==0 || strcmp(szCmd, "cmd-75") ==0 || strcmp(szCmd, "cmd-76") ==0 ||
  437. strcmp(szCmd, "cmd-77") ==0 || strcmp(szCmd, "cmd-78") ==0 || strcmp(szCmd, "cmd-79") ==0 ||
  438. strcmp(szCmd, "cmd-80") ==0 || strcmp(szCmd, "cmd-81") ==0 || strcmp(szCmd, "cmd-82") ==0 ||
  439. strcmp(szCmd, "cmd-83") ==0 || strcmp(szCmd, "cmd-84") ==0 || strcmp(szCmd, "cmd-85") ==0 ||
  440. strcmp(szCmd, "cmd-86") ==0 || strcmp(szCmd, "cmd-87") ==0 || strcmp(szCmd, "cmd-88") ==0 ||
  441. strcmp(szCmd, "cmd-89") ==0 || strcmp(szCmd, "cmd-90") ==0 || strcmp(szCmd, "cmd-91") ==0 ||
  442. strcmp(szCmd, "cmd-92") ==0 || strcmp(szCmd, "cmd-93") ==0 || strcmp(szCmd, "cmd-94") ==0 ||
  443. strcmp(szCmd, "cmd-95") ==0
  444. )
  445. {
  446. #if IS_USE_READMSG_CS
  447. EnterCriticalSection(&m_csReadMsg);
  448. #endif
  449. memcpy(m_sz43Msg[nAddr -1], pBuffer, sizeof(m_sz43Msg[nAddr -1]));
  450. #if IS_USE_READMSG_CS
  451. LeaveCriticalSection(&m_csReadMsg);
  452. #endif
  453. }
  454. }
  455. void kongtiao_cm::CopyUPS_44_Msg( int nAddr, char *szCmd, char *pBuffer)
  456. {
  457. if ( strcmp(szCmd, "cmd-96") ==0 || strcmp(szCmd, "cmd-97") ==0 || strcmp(szCmd, "cmd-98") ==0 ||
  458. strcmp(szCmd, "cmd-99") ==0 || strcmp(szCmd, "cmd-100") ==0 || strcmp(szCmd, "cmd-101") ==0 ||
  459. strcmp(szCmd, "cmd-102") ==0 || strcmp(szCmd, "cmd-103") ==0 || strcmp(szCmd, "cmd-104") ==0 ||
  460. strcmp(szCmd, "cmd-105") ==0 || strcmp(szCmd, "cmd-106") ==0 || strcmp(szCmd, "cmd-107") ==0 ||
  461. strcmp(szCmd, "cmd-108") ==0 || strcmp(szCmd, "cmd-109") ==0 || strcmp(szCmd, "cmd-110") ==0 ||
  462. strcmp(szCmd, "cmd-111") ==0 || strcmp(szCmd, "cmd-112") ==0 || strcmp(szCmd, "cmd-113") ==0 ||
  463. strcmp(szCmd, "cmd-114") ==0 || strcmp(szCmd, "cmd-115") ==0 || strcmp(szCmd, "cmd-116") ==0 ||
  464. strcmp(szCmd, "cmd-117") ==0 || strcmp(szCmd, "cmd-118") ==0 || strcmp(szCmd, "cmd-119") ==0 ||
  465. strcmp(szCmd, "cmd-120") ==0 || strcmp(szCmd, "cmd-121") ==0 || strcmp(szCmd, "cmd-122") ==0 ||
  466. strcmp(szCmd, "cmd-123") ==0 || strcmp(szCmd, "cmd-124") ==0 || strcmp(szCmd, "cmd-125") ==0 ||
  467. strcmp(szCmd, "cmd-126") ==0 || strcmp(szCmd, "cmd-127") ==0 || strcmp(szCmd, "cmd-128") ==0 ||
  468. strcmp(szCmd, "cmd-129") ==0 || strcmp(szCmd, "cmd-130") ==0 || strcmp(szCmd, "cmd-131") ==0 ||
  469. strcmp(szCmd, "cmd-132") ==0 || strcmp(szCmd, "cmd-133") ==0 || strcmp(szCmd, "cmd-134") ==0 ||
  470. strcmp(szCmd, "cmd-135") ==0 || strcmp(szCmd, "cmd-136") ==0 || strcmp(szCmd, "cmd-137") ==0 ||
  471. strcmp(szCmd, "cmd-138") ==0 || strcmp(szCmd, "cmd-139") ==0 || strcmp(szCmd, "cmd-140") ==0 ||
  472. strcmp(szCmd, "cmd-141") ==0 || strcmp(szCmd, "cmd-142") ==0 || strcmp(szCmd, "cmd-143") ==0 ||
  473. strcmp(szCmd, "cmd-144") ==0 || strcmp(szCmd, "cmd-145") ==0 || strcmp(szCmd, "cmd-146") ==0 ||
  474. strcmp(szCmd, "cmd-147") ==0 || strcmp(szCmd, "cmd-148") ==0 || strcmp(szCmd, "cmd-149") ==0 ||
  475. strcmp(szCmd, "cmd-150") ==0 || strcmp(szCmd, "cmd-151") ==0 || strcmp(szCmd, "cmd-152") ==0 ||
  476. strcmp(szCmd, "cmd-153") ==0 || strcmp(szCmd, "cmd-154") ==0 || strcmp(szCmd, "cmd-155") ==0 ||
  477. strcmp(szCmd, "cmd-156") ==0 || strcmp(szCmd, "cmd-157") ==0 || strcmp(szCmd, "cmd-158") ==0 ||
  478. strcmp(szCmd, "cmd-159") ==0 || strcmp(szCmd, "cmd-160") ==0 || strcmp(szCmd, "cmd-161") ==0 ||
  479. strcmp(szCmd, "cmd-162") ==0 || strcmp(szCmd, "cmd-163") ==0 || strcmp(szCmd, "cmd-164") ==0 ||
  480. strcmp(szCmd, "cmd-165") ==0 || strcmp(szCmd, "cmd-166") ==0 || strcmp(szCmd, "cmd-167") ==0 ||
  481. strcmp(szCmd, "cmd-168") ==0 || strcmp(szCmd, "cmd-169") ==0 || strcmp(szCmd, "cmd-170") ==0 ||
  482. strcmp(szCmd, "cmd-171") ==0 || strcmp(szCmd, "cmd-172") ==0 || strcmp(szCmd, "cmd-173") ==0 ||
  483. strcmp(szCmd, "cmd-174") ==0 || strcmp(szCmd, "cmd-175") ==0 || strcmp(szCmd, "cmd-176") ==0 ||
  484. strcmp(szCmd, "cmd-177") ==0 || strcmp(szCmd, "cmd-178") ==0 || strcmp(szCmd, "cmd-179") ==0 ||
  485. strcmp(szCmd, "cmd-180") ==0 || strcmp(szCmd, "cmd-181") ==0 )
  486. {
  487. #if IS_USE_READMSG_CS
  488. EnterCriticalSection(&m_csReadMsg);
  489. #endif
  490. memcpy(m_sz44Msg[nAddr -1], pBuffer, sizeof(m_sz44Msg[nAddr -1]));
  491. #if IS_USE_READMSG_CS
  492. LeaveCriticalSection(&m_csReadMsg);
  493. #endif
  494. }
  495. }
  496. int kongtiao_cm::GetUPS_41Msg(int nAddr, char *szCmd, char *szMsg, int &nIndex, int &nLen, char *szType )
  497. {
  498. int nRet(0);
  499. if (strcmp(szCmd, "cmd-1") ==0 || strcmp(szCmd, "cmd-2") ==0 || strcmp(szCmd, "cmd-3") ==0 ||
  500. strcmp(szCmd, "cmd-4") ==0 || strcmp(szCmd, "cmd-5") ==0 || strcmp(szCmd, "cmd-6") ==0 ||
  501. strcmp(szCmd, "cmd-7") ==0 || strcmp(szCmd, "cmd-8") ==0 || strcmp(szCmd, "cmd-9") ==0 ||
  502. strcmp(szCmd, "cmd-10") ==0 || strcmp(szCmd, "cmd-11") ==0 || strcmp(szCmd, "cmd-12") ==0 ||
  503. strcmp(szCmd, "cmd-13") ==0 || strcmp(szCmd, "cmd-14") ==0 || strcmp(szCmd, "cmd-15") ==0 )
  504. {
  505. #if IS_USE_READMSG_CS
  506. EnterCriticalSection(&m_csReadMsg);
  507. #endif
  508. DataConversion(szType, m_sz41Msg[nAddr -1] + nIndex, szMsg, nLen);
  509. #if IS_USE_READMSG_CS
  510. LeaveCriticalSection(&m_csReadMsg);
  511. #endif
  512. nRet = 0;
  513. }
  514. return nRet;
  515. }
  516. int kongtiao_cm::GetUPS_E1Msg(int nAddr, char *szCmd, char *szMsg, int &nIndex, int &nLen, char *szType )
  517. {
  518. int nRet(0);
  519. if (strcmp(szCmd, "cmd-16") ==0 || strcmp(szCmd, "cmd-17") ==0 || strcmp(szCmd, "cmd-18") ==0 ||
  520. strcmp(szCmd, "cmd-19") ==0 || strcmp(szCmd, "cmd-20") ==0 || strcmp(szCmd, "cmd-21") ==0 ||
  521. strcmp(szCmd, "cmd-22") ==0 || strcmp(szCmd, "cmd-23") ==0 || strcmp(szCmd, "cmd-24") ==0 ||
  522. strcmp(szCmd, "cmd-25") ==0 || strcmp(szCmd, "cmd-26") ==0 || strcmp(szCmd, "cmd-27") ==0 ||
  523. strcmp(szCmd, "cmd-28") ==0 || strcmp(szCmd, "cmd-29") ==0 || strcmp(szCmd, "cmd-30") ==0 ||
  524. strcmp(szCmd, "cmd-31") ==0 )
  525. {
  526. #if IS_USE_READMSG_CS
  527. EnterCriticalSection(&m_csReadMsg);
  528. #endif
  529. DataConversion(szType, m_szE1Msg[nAddr -1] + nIndex, szMsg, nLen);
  530. #if IS_USE_READMSG_CS
  531. LeaveCriticalSection(&m_csReadMsg);
  532. #endif
  533. nRet = 0;
  534. }
  535. return nRet;
  536. }
  537. int kongtiao_cm::GetUPS_E2Msg(int nAddr, char *szCmd, char *szMsg, int &nIndex, int &nLen, char *szType )
  538. {
  539. int nRet(0);
  540. if (strcmp(szCmd, "cmd-32") == 0 ||
  541. strcmp(szCmd, "cmd-33") == 0 || strcmp(szCmd, "cmd-34") == 0 || strcmp(szCmd, "cmd-35") == 0 ||
  542. strcmp(szCmd, "cmd-36") == 0 || strcmp(szCmd, "cmd-37") == 0 || strcmp(szCmd, "cmd-38") == 0 ||
  543. strcmp(szCmd, "cmd-39") == 0 || strcmp(szCmd, "cmd-40") == 0 || strcmp(szCmd, "cmd-41") == 0 ||
  544. strcmp(szCmd, "cmd-42") == 0 || strcmp(szCmd, "cmd-43") == 0 || strcmp(szCmd, "cmd-44") == 0 ||
  545. strcmp(szCmd, "cmd-45") == 0 || strcmp(szCmd, "cmd-46") == 0 || strcmp(szCmd, "cmd-47") == 0 ||
  546. strcmp(szCmd, "cmd-48") == 0 || strcmp(szCmd, "cmd-49") == 0 || strcmp(szCmd, "cmd-50") == 0 ||
  547. strcmp(szCmd, "cmd-51") == 0 )
  548. {
  549. #if IS_USE_READMSG_CS
  550. EnterCriticalSection(&m_csReadMsg);
  551. #endif
  552. DataConversion(szType, m_szE2Msg[nAddr -1] + nIndex, szMsg, nLen);
  553. #if IS_USE_READMSG_CS
  554. LeaveCriticalSection(&m_csReadMsg);
  555. #endif
  556. nRet = 0;
  557. }
  558. return nRet;
  559. }
  560. int kongtiao_cm::GetUPS_E3Msg(int nAddr, char *szCmd, char *szMsg, int &nIndex, int &nLen, char *szType )
  561. {
  562. int nRet(0);
  563. if ( strcmp(szCmd, "cmd-52") == 0 || strcmp(szCmd, "cmd-53") == 0 || strcmp(szCmd, "cmd-54") == 0 ||
  564. strcmp(szCmd, "cmd-55") == 0 || strcmp(szCmd, "cmd-56") == 0 || strcmp(szCmd, "cmd-57") == 0 ||
  565. strcmp(szCmd, "cmd-58") == 0 || strcmp(szCmd, "cmd-59") == 0 || strcmp(szCmd, "cmd-60") == 0 ||
  566. strcmp(szCmd, "cmd-61") == 0 )
  567. {
  568. #if IS_USE_READMSG_CS
  569. EnterCriticalSection(&m_csReadMsg);
  570. #endif
  571. DataConversion(szType, m_szE3Msg[nAddr -1] + nIndex, szMsg, nLen);
  572. #if IS_USE_READMSG_CS
  573. LeaveCriticalSection(&m_csReadMsg);
  574. #endif
  575. nRet = 0;
  576. }
  577. return nRet;
  578. }
  579. int kongtiao_cm::GetUPS_E7Msg(int nAddr, char *szCmd, char *szMsg, int &nIndex, int &nLen, char *szType )
  580. {
  581. int nRet(0);
  582. if ( strcmp(szCmd, "cmd-62") ==0 || strcmp(szCmd, "cmd-63") ==0 || strcmp(szCmd, "cmd-64") ==0 ||
  583. strcmp(szCmd, "cmd-65") ==0 || strcmp(szCmd, "cmd-66") ==0 || strcmp(szCmd, "cmd-67") ==0 ||
  584. strcmp(szCmd, "cmd-68") ==0 || strcmp(szCmd, "cmd-69") ==0 || strcmp(szCmd, "cmd-70") ==0 )
  585. {
  586. #if IS_USE_READMSG_CS
  587. EnterCriticalSection(&m_csReadMsg);
  588. #endif
  589. DataConversion(szType, m_szE7Msg[nAddr -1] + nIndex, szMsg, nLen);
  590. #if IS_USE_READMSG_CS
  591. LeaveCriticalSection(&m_csReadMsg);
  592. #endif
  593. nRet = 0;
  594. }
  595. return nRet;
  596. }
  597. int kongtiao_cm::GetUPS_43Msg(int nAddr, char *szCmd, char *szMsg, int &nIndex, int &nLen, char *szType )
  598. {
  599. int nRet(0);
  600. if (strcmp(szCmd, "cmd-71") ==0 || strcmp(szCmd, "cmd-72") ==0 || strcmp(szCmd, "cmd-73") ==0 ||
  601. strcmp(szCmd, "cmd-74") ==0 || strcmp(szCmd, "cmd-75") ==0 || strcmp(szCmd, "cmd-76") ==0 ||
  602. strcmp(szCmd, "cmd-77") ==0 || strcmp(szCmd, "cmd-78") ==0 || strcmp(szCmd, "cmd-79") ==0 ||
  603. strcmp(szCmd, "cmd-80") ==0 || strcmp(szCmd, "cmd-81") ==0 || strcmp(szCmd, "cmd-82") ==0 ||
  604. strcmp(szCmd, "cmd-83") ==0 || strcmp(szCmd, "cmd-84") ==0 || strcmp(szCmd, "cmd-85") ==0 ||
  605. strcmp(szCmd, "cmd-86") ==0 || strcmp(szCmd, "cmd-87") ==0 || strcmp(szCmd, "cmd-88") ==0 ||
  606. strcmp(szCmd, "cmd-89") ==0 || strcmp(szCmd, "cmd-90") ==0 || strcmp(szCmd, "cmd-91") ==0 ||
  607. strcmp(szCmd, "cmd-92") ==0 || strcmp(szCmd, "cmd-93") ==0 || strcmp(szCmd, "cmd-94") ==0 ||
  608. strcmp(szCmd, "cmd-95") ==0 )
  609. {
  610. #if IS_USE_READMSG_CS
  611. EnterCriticalSection(&m_csReadMsg);
  612. #endif
  613. DataConversion(szType, m_sz43Msg[nAddr -1] + nIndex, szMsg, nLen);
  614. #if IS_USE_READMSG_CS
  615. LeaveCriticalSection(&m_csReadMsg);
  616. #endif
  617. nRet = 0;
  618. }
  619. return nRet;
  620. }
  621. int kongtiao_cm::GetUPS_44Msg(int nAddr,char *szCmd, char *szMsg, int &nIndex, int &nLen, char *szType )
  622. {
  623. int nRet(0);
  624. if (strcmp(szCmd, "cmd-96") ==0 || strcmp(szCmd, "cmd-97") ==0 || strcmp(szCmd, "cmd-98") ==0 ||
  625. strcmp(szCmd, "cmd-99") ==0 || strcmp(szCmd, "cmd-100") ==0 || strcmp(szCmd, "cmd-101") ==0 ||
  626. strcmp(szCmd, "cmd-102") ==0 || strcmp(szCmd, "cmd-103") ==0 || strcmp(szCmd, "cmd-104") ==0 ||
  627. strcmp(szCmd, "cmd-105") ==0 || strcmp(szCmd, "cmd-106") ==0 || strcmp(szCmd, "cmd-107") ==0 ||
  628. strcmp(szCmd, "cmd-108") ==0 || strcmp(szCmd, "cmd-109") ==0 || strcmp(szCmd, "cmd-110") ==0 ||
  629. strcmp(szCmd, "cmd-111") ==0 || strcmp(szCmd, "cmd-112") ==0 || strcmp(szCmd, "cmd-113") ==0 ||
  630. strcmp(szCmd, "cmd-114") ==0 || strcmp(szCmd, "cmd-115") ==0 || strcmp(szCmd, "cmd-116") ==0 ||
  631. strcmp(szCmd, "cmd-117") ==0 || strcmp(szCmd, "cmd-118") ==0 || strcmp(szCmd, "cmd-119") ==0 ||
  632. strcmp(szCmd, "cmd-120") ==0 || strcmp(szCmd, "cmd-121") ==0 || strcmp(szCmd, "cmd-122") ==0 ||
  633. strcmp(szCmd, "cmd-123") ==0 || strcmp(szCmd, "cmd-124") ==0 || strcmp(szCmd, "cmd-125") ==0 ||
  634. strcmp(szCmd, "cmd-126") ==0 || strcmp(szCmd, "cmd-127") ==0 || strcmp(szCmd, "cmd-128") ==0 ||
  635. strcmp(szCmd, "cmd-129") ==0 || strcmp(szCmd, "cmd-130") ==0 || strcmp(szCmd, "cmd-131") ==0 ||
  636. strcmp(szCmd, "cmd-132") ==0 || strcmp(szCmd, "cmd-133") ==0 || strcmp(szCmd, "cmd-134") ==0 ||
  637. strcmp(szCmd, "cmd-135") ==0 || strcmp(szCmd, "cmd-136") ==0 || strcmp(szCmd, "cmd-137") ==0 ||
  638. strcmp(szCmd, "cmd-138") ==0 || strcmp(szCmd, "cmd-139") ==0 || strcmp(szCmd, "cmd-140") ==0 ||
  639. strcmp(szCmd, "cmd-141") ==0 || strcmp(szCmd, "cmd-142") ==0 || strcmp(szCmd, "cmd-143") ==0 ||
  640. strcmp(szCmd, "cmd-144") ==0 || strcmp(szCmd, "cmd-145") ==0 || strcmp(szCmd, "cmd-146") ==0 ||
  641. strcmp(szCmd, "cmd-147") ==0 || strcmp(szCmd, "cmd-148") ==0 || strcmp(szCmd, "cmd-149") ==0 ||
  642. strcmp(szCmd, "cmd-150") ==0 || strcmp(szCmd, "cmd-151") ==0 || strcmp(szCmd, "cmd-152") ==0 ||
  643. strcmp(szCmd, "cmd-153") ==0 || strcmp(szCmd, "cmd-154") ==0 || strcmp(szCmd, "cmd-155") ==0 ||
  644. strcmp(szCmd, "cmd-156") ==0 || strcmp(szCmd, "cmd-157") ==0 || strcmp(szCmd, "cmd-158") ==0 ||
  645. strcmp(szCmd, "cmd-159") ==0 || strcmp(szCmd, "cmd-160") ==0 || strcmp(szCmd, "cmd-161") ==0 ||
  646. strcmp(szCmd, "cmd-162") ==0 || strcmp(szCmd, "cmd-163") ==0 || strcmp(szCmd, "cmd-164") ==0 ||
  647. strcmp(szCmd, "cmd-165") ==0 || strcmp(szCmd, "cmd-166") ==0 || strcmp(szCmd, "cmd-167") ==0 ||
  648. strcmp(szCmd, "cmd-168") ==0 || strcmp(szCmd, "cmd-169") ==0 || strcmp(szCmd, "cmd-170") ==0 ||
  649. strcmp(szCmd, "cmd-171") ==0 || strcmp(szCmd, "cmd-172") ==0 || strcmp(szCmd, "cmd-173") ==0 ||
  650. strcmp(szCmd, "cmd-174") ==0 || strcmp(szCmd, "cmd-175") ==0 || strcmp(szCmd, "cmd-176") ==0 ||
  651. strcmp(szCmd, "cmd-177") ==0 || strcmp(szCmd, "cmd-178") ==0 || strcmp(szCmd, "cmd-179") ==0 ||
  652. strcmp(szCmd, "cmd-180") ==0 || strcmp(szCmd, "cmd-181") ==0 )
  653. {
  654. #if IS_USE_READMSG_CS
  655. EnterCriticalSection(&m_csReadMsg);
  656. #endif
  657. DataConversion(szType, m_sz44Msg[nAddr -1] + nIndex, szMsg, nLen);
  658. #if IS_USE_READMSG_CS
  659. LeaveCriticalSection(&m_csReadMsg);
  660. #endif
  661. nRet = 0;
  662. }
  663. return nRet;
  664. }
  665. void kongtiao_cm::lowcase2uppcase(BYTE &btSrc)
  666. {
  667. if( btSrc >= 'a' && btSrc <= 'z' )
  668. {
  669. btSrc = btSrc - 'a' + 'A';
  670. }
  671. }
  672. void kongtiao_cm::GetEmersonLength(const int &iLenID, char *szLegth)
  673. {
  674. int ilengthchecksum(0);
  675. int it = iLenID;
  676. ilengthchecksum = it & 0x00F ; it = iLenID;
  677. ilengthchecksum += (it &0x0F0) >> 4; it = iLenID;
  678. ilengthchecksum += (it &0xF00 ) >> 8;
  679. ilengthchecksum = ilengthchecksum%16;
  680. ilengthchecksum = ~ilengthchecksum +17;
  681. int ilength = (ilengthchecksum & 0x000F) << 12 ;
  682. ilength = ilength | iLenID;
  683. itoa(ilength,szLegth,16 );
  684. for (int i(0) ; i < 5 ; i++)
  685. {
  686. lowercase2uppercase((BYTE &)szLegth[i]);
  687. }
  688. }
  689. void kongtiao_cm::GetEmersonCheck(char *szData, char *szCheck ,int nlen /* = 12 */)
  690. {
  691. DWORD dwSum(0);
  692. nlen = strlen(szData);
  693. for (int i(0); i < nlen; i++)
  694. {
  695. dwSum += szData[i+1] ;
  696. }
  697. WORD iCompliment = dwSum;
  698. iCompliment = ~iCompliment;//取反
  699. iCompliment++;
  700. itoa(iCompliment, szCheck, 16);
  701. for (int i(0); i < 5 ; i++)
  702. {
  703. lowcase2uppcase((BYTE &)szCheck[i]);
  704. }
  705. }
  706. WORD kongtiao_cm::RtnCheck(char *szMsg,int len)
  707. {
  708. char ch[2] = {0};
  709. ch[0] = szMsg[7];
  710. ch[1] = szMsg[8];
  711. if (atoi(ch) == 0)
  712. {
  713. return ERR_CODE_RTN_NATURAL;
  714. }
  715. else if (atoi(ch) ==1)
  716. {
  717. return ERR_CODE_RTN_VER_ERROR;
  718. }
  719. else if (atoi(ch) ==2)
  720. {
  721. return ERR_CODE_RTN_CHKSUM_ERROR;
  722. }
  723. else if (atoi(ch) ==3)
  724. {
  725. return ERR_CODE_RTN_LCHKSUM_ERROR;
  726. }
  727. else if (atoi(ch) ==4)
  728. {
  729. return ERR_CODE_RTN_CID_ERROR;
  730. }
  731. else if (atoi(ch) ==5)
  732. {
  733. return ERR_CODE_RTN_COMMAND_FORMAT;
  734. }
  735. else if (atoi(ch) ==6)
  736. {
  737. return ERR_CODE_RTN_INVALID_DATA;
  738. }
  739. else if (atoi(ch) ==16)
  740. {
  741. return ERR_CODE_RTN_INVALID_LIMIT;
  742. }
  743. else if (atoi(ch) ==17)
  744. {
  745. return ERR_CODE_RTN_OPERATE_FAIL;
  746. }
  747. else if (atoi(ch) ==18)
  748. {
  749. return ERR_CODE_RTN_EQUIT_FAIL;
  750. }
  751. return -1;
  752. }
  753. void kongtiao_cm::SimulationCommData(int nAddr)
  754. {
  755. //~10012A0020680033335F439A1963439A99644366665C4333335A4333335D433333B33F0000C03FCDCC8C3F33B3DA43CDCC474200000033B3DA43E71D.
  756. memcpy(m_sz41Msg[nAddr -1], "~10012A0020680033335F439A1963439A99644366665C4333335A4333335D433333B33F0000C03FCDCC8C3F33B3DA43CDCC474200000033B3DA43E71D.", sizeof("~10012A0020680033335F439A1963439A99644366665C4333335A4333335D433333B33F0000C03FCDCC8C3F33B3DA43CDCC474200000033B3DA43E71D."));
  757. //~10012A00307600000E66A6C2439A19C5439A59C3436666663FCDCC4C3F0000803FC3F547423333333FA4703D3F1F852B3F9A995F43CD4C614333B35E4348E14742E3B1.
  758. memcpy(m_szE1Msg[nAddr -1], "~10012A00307600000E66A6C2439A19C5439A59C3436666663FCDCC4C3F0000803FC3F547423333333FA4703D3F1F852B3F9A995F43CD4C614333B35E4348E14742E3B1.", sizeof("~10012A00307600000E66A6C2439A19C5439A59C3436666663FCDCC4C3F0000803FC3F547423333333FA4703D3F1F852B3F9A995F43CD4C614333B35E4348E14742E3B1."));
  759. //~10012A00109600001285EB113F1F856B3F000000003333334000000040CDCCCC3FCDCCCC3D9A99993E00000000CDCC4C3ECDCC4C3ECDCCCC3D9A99993ECDCCCC3ECDCCCC3D9A9979409A99D9403333F33FDB96.
  760. memcpy(m_szE2Msg[nAddr -1], "~10012A00109600001285EB113F1F856B3F000000003333334000000040CDCCCC3FCDCCCC3D9A99993E00000000CDCC4C3ECDCC4C3ECDCCCC3D9A99993ECDCCCC3ECDCCCC3D9A9979409A99D9403333F33FDB96.", sizeof("~10012A00109600001285EB113F1F856B3F000000003333334000000040CDCCCC3FCDCCCC3D9A99993E00000000CDCC4C3ECDCC4C3ECDCCCC3D9A99993ECDCCCC3ECDCCCC3D9A9979409A99D9403333F33FDB96."));
  761. //~10012A00004C0009000000000000000000000000000000000000000000000000000000000000000000000000EF4B.
  762. memcpy(m_szE3Msg[nAddr -1], "~10012A00004C0009000000000000000000000000000000000000000000000000000000000000000000000000EF4B.", sizeof("~10012A00004C0009000000000000000000000000000000000000000000000000000000000000000000000000EF4B."));
  763. //~10012A00604600010800009644CD4C5A430AD7233E66E65A430AD7233E0000803F0000C8410000C841EEC9.
  764. memcpy(m_szE7Msg[nAddr -1], "~10012A00604600010800009644CD4C5A430AD7233E66E65A430AD7233E0000803F0000C8410000C841EEC9.", sizeof("~10012A00604600010800009644CD4C5A430AD7233E66E65A430AD7233E0000803F0000C8410000C841EEC9."));
  765. //~10012A009034000117E1E0E1E0E1E1E0E1E1E0E2E1E2E0E1E1E1E1E1E1E1E1E1F1D2.
  766. memcpy(m_sz43Msg[nAddr -1], "~10012A009034000117E1E0E1E0E1E1E0E1E1E0E2E1E2E0E1E1E1E1E1E1E1E1E1F1D2.", sizeof("~10012A009034000117E1E0E1E0E1E1E0E1E1E0E2E1E2E0E1E1E1E1E1E1E1E1E1F1D2."));
  767. //~10012A00B0BA000000000000000054000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DA8D.
  768. memcpy(m_sz44Msg[nAddr -1], "~10012A00B0BA000000000000000054000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DA8D.", sizeof("~10012A00B0BA000000000000000054000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DA8D."));
  769. }
  770. /////////