ParadigmNxV260.cpp 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915
  1. //////////////////////////////////////////////////////////////////////////////
  2. ////// //////
  3. ////// 文 件: ParadigmNxV260.cpp //////
  4. ////// 作 者: wangjianfeng //////
  5. ////// 创建时间: //////
  6. ////// 说 明: NxV260协议 //////
  7. ////// //////
  8. ////// 修改时间:2010-09-07 //////
  9. ////// 修改说明:新版本 //////
  10. ////// //////
  11. //////////////////////////////////////////////////////////////////////////////
  12. #include "StdAfx.h"
  13. #include "CommProcess.h"
  14. #include "Global.h"
  15. #include ".\paradigmnxv260.h"
  16. ParadigmNxV260::ParadigmNxV260( char szPath[MAX_PATH], // 程序所在路径
  17. char szIniName[MAX_PATH], // 配置文件名称
  18. int nCommPort, // 串行端口
  19. int nAddr, // 设备地址
  20. int nRate, // 波特率
  21. int nDataBit, // 数据位
  22. int nStopBit, // 停止位
  23. int nParity, // 校验位
  24. int nInterval // 时间间隔
  25. )
  26. {
  27. #if IS_USE_READMSG_CS
  28. InitializeCriticalSection( &m_csReadMsg ); //初始化一个临界资源对象
  29. #endif
  30. MTVERIFY( m_hSemComm = CreateEvent( NULL, TRUE, TRUE, 0 ) ); //CreateEvent()创建或打开一个命名的或无名的事件对象
  31. for(int i = 0;i < MAX_ADDR;i++)
  32. {
  33. memset(m_szNxV260_41Msg[i], 0, sizeof(m_szNxV260_41Msg[i]));
  34. memset(m_szNxV260_E1Msg[i], 0, sizeof(m_szNxV260_E1Msg[i]));
  35. memset(m_szNxV260_E2Msg[i], 0, sizeof(m_szNxV260_E2Msg[i]));
  36. memset(m_szNxV260_E3Msg[i], 0, sizeof(m_szNxV260_E3Msg[i]));
  37. memset(m_szNxV260_43Msg[i], 0, sizeof(m_szNxV260_43Msg[i]));
  38. memset(m_szNxV260_44Msg[i], 0, sizeof(m_szNxV260_44Msg[i]));
  39. m_devOnline[i] = TRUE;
  40. m_dwOnlineTick[i] = 0;
  41. }
  42. }
  43. ParadigmNxV260::~ParadigmNxV260()
  44. {
  45. #if IS_USE_READMSG_CS
  46. DeleteCriticalSection( &m_csReadMsg );
  47. #endif
  48. MTVERIFY( CloseHandle( m_hSemComm ) );
  49. CloseComm();
  50. }
  51. BOOL ParadigmNxV260::NxV260OpenComm(int nCommPort, int nAddr, int nRate, int nDataBit, int nStopBit, int nParity, int nInterval)
  52. {
  53. BOOL bResult = FALSE;
  54. bResult = OpenComm( nCommPort, nAddr, nRate, nDataBit, nStopBit, nParity, nInterval );
  55. return bResult;
  56. }
  57. int ParadigmNxV260::SendReadRequest(
  58. char szPath[MAX_PATH],
  59. char szIniName[MAX_PATH],
  60. int nCommPort,
  61. int nAddr,
  62. char szCmd[MAX_CMD],
  63. char szMsg[VAR_MSG],
  64. int nReversed1,
  65. int nReversed2,
  66. int nReversed3,
  67. int nReversed4,
  68. int nReversed5,
  69. float fReversed1,
  70. float fReversed2,
  71. float fReversed3,
  72. char szReversed1[MAX_RESERVED1],
  73. char szReversed2[MAX_RESERVED2],
  74. char szReversed3[MAX_RESERVED3],
  75. char szReversed4[MAX_RESERVED4],
  76. char szReversed5[MAX_RESERVED5]
  77. )
  78. {
  79. int nIndex = 0, nLen = 0;
  80. char szSendCmd[10] = {0};
  81. char szType[TYPE_LENGTH] = {0};
  82. GetNxV260FromIni(szPath, szIniName, szCmd,szSendCmd, szType, nIndex, nLen);
  83. CCommProcess *pComm = FindComm(nCommPort);
  84. if( pComm == NULL ) return -1;
  85. int nRet = -1;
  86. if (
  87. (strlen(m_szNxV260_41Msg[nAddr -1]) ==0 &&
  88. (
  89. strcmp(szCmd, "cmd-1") == 0 || strcmp(szCmd, "cmd-2") == 0 ||
  90. strcmp(szCmd, "cmd-3") == 0 || strcmp(szCmd, "cmd-4") == 0 ||
  91. strcmp(szCmd, "cmd-6") == 0 || strcmp(szCmd, "cmd-5") == 0 ||
  92. strcmp(szCmd, "cmd-6") == 0 || strcmp(szCmd, "cmd-7") == 0 ||
  93. strcmp(szCmd, "cmd-8") == 0 || strcmp(szCmd, "cmd-9") == 0 ||
  94. strcmp(szCmd, "cmd-10") == 0 || strcmp(szCmd, "cmd-11") == 0 ||
  95. strcmp(szCmd, "cmd-12") == 0 || strcmp(szCmd, "cmd-13") == 0
  96. ) )
  97. ||
  98. (strlen(m_szNxV260_E1Msg[nAddr -1]) ==0 &&
  99. (
  100. strcmp(szCmd, "cmd-14") == 0 || strcmp(szCmd, "cmd-15") == 0 ||
  101. strcmp(szCmd, "cmd-16") == 0 || strcmp(szCmd, "cmd-17") == 0 ||
  102. strcmp(szCmd, "cmd-18") == 0 || strcmp(szCmd, "cmd-19") == 0 ||
  103. strcmp(szCmd, "cmd-20") == 0 || strcmp(szCmd, "cmd-21") == 0 ||
  104. strcmp(szCmd, "cmd-22") == 0 || strcmp(szCmd, "cmd-23") == 0 ||
  105. strcmp(szCmd, "cmd-24") == 0 || strcmp(szCmd, "cmd-25") == 0 ||
  106. strcmp(szCmd, "cmd-26") == 0 || strcmp(szCmd, "cmd-27") == 0 ||
  107. strcmp(szCmd, "cmd-28") == 0
  108. ) )
  109. ||
  110. (strlen(m_szNxV260_E2Msg[nAddr -1]) ==0 &&
  111. (
  112. strcmp(szCmd, "cmd-29") == 0 || strcmp(szCmd, "cmd-30") == 0 ||
  113. strcmp(szCmd, "cmd-31") == 0 || strcmp(szCmd, "cmd-32") == 0 ||
  114. strcmp(szCmd, "cmd-33") == 0 || strcmp(szCmd, "cmd-34") == 0 ||
  115. strcmp(szCmd, "cmd-35") == 0 || strcmp(szCmd, "cmd-36") == 0 ||
  116. strcmp(szCmd, "cmd-37") == 0 || strcmp(szCmd, "cmd-38") == 0 ||
  117. strcmp(szCmd, "cmd-39") == 0 || strcmp(szCmd, "cmd-40") == 0 ||
  118. strcmp(szCmd, "cmd-41") == 0 || strcmp(szCmd, "cmd-42") == 0 ||
  119. strcmp(szCmd, "cmd-43") == 0
  120. ) )
  121. ||
  122. (strlen(m_szNxV260_E3Msg[nAddr -1]) ==0 &&
  123. (
  124. strcmp(szCmd, "cmd-44") == 0 || strcmp(szCmd, "cmd-45")== 0 ||
  125. strcmp(szCmd, "cmd-46")== 0 || strcmp(szCmd, "cmd-47")== 0 ||
  126. strcmp(szCmd, "cmd-48")== 0 || strcmp(szCmd, "cmd-49")== 0 ||
  127. strcmp(szCmd, "cmd-50")== 0 || strcmp(szCmd, "cmd-51")== 0 ||
  128. strcmp(szCmd, "cmd-52")== 0 || strcmp(szCmd, "cmd-53")== 0 ||
  129. strcmp(szCmd, "cmd-54")== 0 || strcmp(szCmd, "cmd-55")== 0 ||
  130. strcmp(szCmd, "cmd-56")== 0 || strcmp(szCmd, "cmd-57")== 0 ||
  131. strcmp(szCmd, "cmd-58")== 0 || strcmp(szCmd, "cmd-59")== 0 ||
  132. strcmp(szCmd, "cmd-60")== 0 || strcmp(szCmd, "cmd-61")== 0
  133. ) )
  134. ||
  135. (strlen(m_szNxV260_43Msg[nAddr -1]) ==0 &&
  136. (
  137. strcmp(szCmd, "cmd-62")== 0 || strcmp(szCmd, "cmd-63")== 0 ||
  138. strcmp(szCmd, "cmd-64")== 0 || strcmp(szCmd, "cmd-65")== 0 ||
  139. strcmp(szCmd, "cmd-66")== 0 || strcmp(szCmd, "cmd-67")== 0 ||
  140. strcmp(szCmd, "cmd-68")== 0 || strcmp(szCmd, "cmd-69")== 0 ||
  141. strcmp(szCmd, "cmd-70")== 0 || strcmp(szCmd, "cmd-71")== 0 ||
  142. strcmp(szCmd, "cmd-72")== 0 || strcmp(szCmd, "cmd-73")== 0
  143. ) )
  144. ||
  145. (strlen(m_szNxV260_44Msg[nAddr -1]) ==0 &&
  146. (
  147. strcmp(szCmd, "cmd-74")== 0 || strcmp(szCmd, "cmd-75")== 0 ||
  148. strcmp(szCmd, "cmd-76")== 0 || strcmp(szCmd, "cmd-77")== 0 ||
  149. strcmp(szCmd, "cmd-78")== 0 || strcmp(szCmd, "cmd-79")== 0 ||
  150. strcmp(szCmd, "cmd-80")== 0 || strcmp(szCmd, "cmd-81")== 0 ||
  151. strcmp(szCmd, "cmd-82")== 0 || strcmp(szCmd, "cmd-83")== 0 ||
  152. strcmp(szCmd, "cmd-84")== 0 || strcmp(szCmd, "cmd-85")== 0 ||
  153. strcmp(szCmd, "cmd-86")== 0 || strcmp(szCmd, "cmd-87")== 0 ||
  154. strcmp(szCmd, "cmd-88")== 0 || strcmp(szCmd, "cmd-89")== 0 ||
  155. strcmp(szCmd, "cmd-90")== 0 || strcmp(szCmd, "cmd-91")== 0 ||
  156. strcmp(szCmd, "cmd-92")== 0 || strcmp(szCmd, "cmd-93")== 0 ||
  157. strcmp(szCmd, "cmd-94")== 0 || strcmp(szCmd, "cmd-95")== 0 ||
  158. strcmp(szCmd, "cmd-96")== 0 || strcmp(szCmd, "cmd-97")== 0 ||
  159. strcmp(szCmd, "cmd-98")== 0 || strcmp(szCmd, "cmd-99")== 0 ||
  160. strcmp(szCmd, "cmd-100")== 0 || strcmp(szCmd, "cmd-101")== 0 ||
  161. strcmp(szCmd, "cmd-102")== 0 || strcmp(szCmd, "cmd-103")== 0 ||
  162. strcmp(szCmd, "cmd-104")== 0 || strcmp(szCmd, "cmd-105")== 0 ||
  163. strcmp(szCmd, "cmd-106")== 0 || strcmp(szCmd, "cmd-107")== 0 ||
  164. strcmp(szCmd, "cmd-108")== 0 || strcmp(szCmd, "cmd-109")== 0 ||
  165. strcmp(szCmd, "cmd-110")== 0 || strcmp(szCmd, "cmd-111")== 0 ||
  166. strcmp(szCmd, "cmd-112")== 0 || strcmp(szCmd, "cmd-113")== 0 ||
  167. strcmp(szCmd, "cmd-114")== 0 || strcmp(szCmd, "cmd-115")== 0 ||
  168. strcmp(szCmd, "cmd-116")== 0 || strcmp(szCmd, "cmd-117")== 0 ||
  169. strcmp(szCmd, "cmd-118")== 0 || strcmp(szCmd, "cmd-119")== 0 ||
  170. strcmp(szCmd, "cmd-120")== 0 || strcmp(szCmd, "cmd-121")== 0 ||
  171. strcmp(szCmd, "cmd-122")== 0 || strcmp(szCmd, "cmd-123")== 0 ||
  172. strcmp(szCmd, "cmd-124")== 0 || strcmp(szCmd, "cmd-125")== 0 ||
  173. strcmp(szCmd, "cmd-126")== 0 || strcmp(szCmd, "cmd-127")== 0 ||
  174. strcmp(szCmd, "cmd-128")== 0 || strcmp(szCmd, "cmd-129")== 0 ||
  175. strcmp(szCmd, "cmd-130")== 0 || strcmp(szCmd, "cmd-131")== 0 ||
  176. strcmp(szCmd, "cmd-132")== 0 || strcmp(szCmd, "cmd-133")== 0 ||
  177. strcmp(szCmd, "cmd-134")== 0 || strcmp(szCmd, "cmd-135")== 0 ||
  178. strcmp(szCmd, "cmd-136")== 0 || strcmp(szCmd, "cmd-137")== 0 ||
  179. strcmp(szCmd, "cmd-138")== 0 || strcmp(szCmd, "cmd-139")== 0 ||
  180. strcmp(szCmd, "cmd-140")== 0 || strcmp(szCmd, "cmd-141")== 0 ||
  181. strcmp(szCmd, "cmd-142")== 0
  182. ) )
  183. ||
  184. strcmp(szCmd, "cmd-1") == 0 ||
  185. strcmp(szCmd, "cmd-14") == 0 ||
  186. strcmp(szCmd, "cmd-29") == 0 ||
  187. strcmp(szCmd, "cmd-44") == 0 ||
  188. strcmp(szCmd, "cmd-62") == 0 ||
  189. strcmp(szCmd, "cmd-74") == 0
  190. )
  191. {
  192. nRet = GetDeviceParam( nAddr,pComm, szSendCmd, szCmd, szMsg, nIndex, nLen, szType );
  193. if( nRet != 0 ) return nRet;
  194. }
  195. if( GetTickCount() - m_dwOnlineTick[nAddr -1] > 60 *1000 && m_dwOnlineTick[nAddr -1] > 0 )
  196. {
  197. m_devOnline[nAddr -1] = FALSE;
  198. }
  199. else if( GetTickCount() - m_dwOnlineTick[nAddr -1] < 60 *1000 && m_dwOnlineTick[nAddr -1] > 0 )
  200. {
  201. m_devOnline[nAddr -1] = TRUE;
  202. }
  203. if( m_devOnline[nAddr -1] == FALSE )
  204. {
  205. return -1;
  206. }
  207. nRet = GetNxV260Q41VarMsg(nAddr, szCmd, szMsg, nIndex, nLen, szType);
  208. nRet = GetNxV260QE1VarMsg(nAddr, szCmd, szMsg, nIndex, nLen, szType);
  209. nRet = GetNxV260QE2VarMsg(nAddr, szCmd, szMsg, nIndex, nLen, szType);
  210. nRet = GetNxV260QE3VarMsg(nAddr, szCmd, szMsg, nIndex, nLen, szType);
  211. nRet = GetNxV260Q43VarMsg(nAddr, szCmd, szMsg, nIndex, nLen, szType);
  212. nRet = GetNxV260Q44VarMsg(nAddr, szCmd, szMsg, nIndex, nLen, szType);
  213. return nRet;
  214. }
  215. int ParadigmNxV260::GetDeviceParam(
  216. int nAddr,
  217. CCommProcess *pComm, //串口对象指针
  218. char szSendCmd[10], //发送Buffer
  219. char szCmd[MAX_CMD], // 命令
  220. char szRecvMsg[VAR_MSG], // 接收Buffer
  221. int &nIndex, // 变量索引,针对接收Buffer而言
  222. int &nLen, // 变量长度
  223. char szType[TYPE_LENGTH] // 变量数据类型
  224. )
  225. {
  226. int nRet = -1;
  227. nRet = RequestReadStatus(nAddr,pComm, szSendCmd);
  228. if( nRet != 0 )
  229. {
  230. return nRet; // 串口忙
  231. }
  232. nRet = ResponseReadStatus(nAddr, pComm, szCmd, szRecvMsg, nIndex, nLen, szType);
  233. return nRet;
  234. }
  235. int ParadigmNxV260::RequestReadStatus(int nAddr,CCommProcess *pComm,char szSendCmd[10])
  236. {
  237. #if DEBUG_NxV260
  238. char chLength[4] = {0};
  239. char chChkSum[5] = {0};
  240. REQUESTPARAM RequestPara;
  241. int RequestParaLen = sizeof(RequestPara);
  242. memset( &RequestPara, 0, RequestParaLen );
  243. //起始位
  244. RequestPara.RequestChild.bySoi = 0x7E;
  245. //通讯协议版本 2.60
  246. RequestPara.RequestChild.byVer[0] = 0x32;
  247. RequestPara.RequestChild.byVer[1] = 0x36;
  248. //设备地址描述
  249. RequestPara.RequestChild.byAdr[0] = ByteToAscii((nAddr >> 4) & 0x0f);
  250. RequestPara.RequestChild.byAdr[1] = ByteToAscii(nAddr & 0x0f);
  251. //Cid1 2A
  252. RequestPara.RequestChild.byCid1[0] = 0x32;
  253. RequestPara.RequestChild.byCid1[1] = 0x41;
  254. //Cid2
  255. memcpy(RequestPara.RequestChild.byCid2, szSendCmd, 2);
  256. RequestPara.RequestChild.byLength[0] = 0x30;
  257. RequestPara.RequestChild.byLength[1] = 0x30;
  258. RequestPara.RequestChild.byLength[2] = 0x30;
  259. RequestPara.RequestChild.byLength[3] = 0x30;
  260. //Info
  261. //RequestPara.RequestChild.byInfo[0] = 0x30;
  262. //RequestPara.RequestChild.byInfo[1] = 0x31;
  263. //校验码
  264. BYTE *pDataBuf = new BYTE[RequestParaLen - 5];
  265. memset(pDataBuf, 0, RequestParaLen -5 );
  266. memcpy(pDataBuf, &RequestPara, RequestParaLen - 5);
  267. GetCheckSum((char *)pDataBuf + 1, chChkSum, RequestParaLen - 6 );
  268. delete []pDataBuf;
  269. pDataBuf = NULL;
  270. RequestPara.byCheckSum[0] = chChkSum[0];
  271. RequestPara.byCheckSum[1] = chChkSum[1];
  272. RequestPara.byCheckSum[2] = chChkSum[2];
  273. RequestPara.byCheckSum[3] = chChkSum[3];
  274. //结束符
  275. RequestPara.byEoi = 0x0D;
  276. //WaitForSingObject();等待有信号;
  277. if( WaitForSingleObject( m_hSemComm, 0 ) == WAIT_OBJECT_0 )
  278. {
  279. //求得数组字符实际长度;
  280. int nDataLen = (int)sizeof(RequestPara);
  281. //ResetEvent()设置无信号状态
  282. ResetEvent( m_hSemComm );
  283. int nResult = pComm->Write((BYTE *)&RequestPara, nDataLen);
  284. if( nResult != nDataLen )
  285. {
  286. SetEvent( m_hSemComm );
  287. //LOG4C((LOG_NOTICE,"Write写错误"));
  288. return EER_CODE_ParadigmNxV260_COM_REGNUM; //返回 错误值;
  289. }
  290. }
  291. else
  292. {
  293. //如果m_hSemCom无信号,返回错误;
  294. //LOG4C((LOG_NOTICE, "事件m_hSenCom无信号"));
  295. return ERR_CODE_ParadigmNxV260_COM_BUSY;
  296. }
  297. #endif
  298. return 0;
  299. }
  300. int ParadigmNxV260::ResponseReadStatus(
  301. int nAddr,
  302. CCommProcess *pComm,
  303. char szCmd[MAX_CMD],
  304. char szRecvMsg[VAR_MSG],
  305. int &nIndex,
  306. int &nLen,
  307. char szType[TYPE_LENGTH]
  308. )
  309. {
  310. #if DEBUG_NxV260
  311. RESPONSE_STRUCT structResponse;
  312. memset( &structResponse, 0, sizeof(RESPONSE_STRUCT) );
  313. int nReceiveLen = 0;
  314. nReceiveLen = sizeof(RESPONSE_STRUCT);
  315. char *pBuffer = new char[nReceiveLen];
  316. memset(pBuffer, 0, nLen);
  317. int nReadLen = 0;
  318. nReadLen = pComm->Read((BYTE *)pBuffer, nReceiveLen);
  319. if (!CheckLength(pBuffer)) //长度校验出错
  320. {
  321. SetEvent(m_hSemComm);
  322. if (pBuffer !=NULL)
  323. {
  324. delete[] pBuffer;
  325. pBuffer = NULL;
  326. }
  327. //LOG4C((LOG_NOTICE,"长度校验出错"));
  328. return ERR_CODE_ParadigmNxV260_COM_CHKSUM_LOST;
  329. }
  330. if (!ChkSumCheck(pBuffer,nReadLen)) //校验码校验出错
  331. {
  332. SetEvent(m_hSemComm);
  333. if (pBuffer !=NULL)
  334. {
  335. delete[] pBuffer;
  336. pBuffer = NULL;
  337. }
  338. //LOG4C((LOG_NOTICE,"校验码校验出错"));
  339. return ERR_CODE_ParadigmNxV260_COM_CHKSUM_LOST;
  340. }
  341. int nRet = RtnCheck(pBuffer, nReadLen);
  342. if (nRet != 0) //RTN校验出错
  343. {
  344. SetEvent( m_hSemComm );
  345. if( pBuffer != NULL)
  346. {
  347. delete[] pBuffer;
  348. pBuffer = NULL;
  349. }
  350. //LOG4C((LOG_NOTICE,"RTN校验出错"));
  351. return nRet;
  352. }
  353. if( nReadLen <= 0) // 串口没有读到数据
  354. {
  355. SetEvent( m_hSemComm );
  356. if( pBuffer != NULL)
  357. {
  358. delete[] pBuffer;
  359. pBuffer = NULL;
  360. }
  361. //LOG4C((LOG_NOTICE,"串口没有读到数据"));
  362. return ERR_CODE_ParadigmNxV260_COM_READ_NO_DATA;
  363. }
  364. SetNxV260Q41VarMsg( nAddr, szCmd, pBuffer);
  365. SetNxV260QE1VarMsg( nAddr, szCmd, pBuffer);
  366. SetNxV260QE2VarMsg( nAddr, szCmd, pBuffer);
  367. SetNxV260QE3VarMsg( nAddr, szCmd, pBuffer);
  368. SetNxV260Q43VarMsg( nAddr, szCmd, pBuffer);
  369. SetNxV260Q44VarMsg( nAddr, szCmd, pBuffer);
  370. m_dwOnlineTick[nAddr -1] = GetTickCount();
  371. SetEvent( m_hSemComm );
  372. if( pBuffer != NULL)
  373. {
  374. delete[] pBuffer;
  375. pBuffer = NULL;
  376. }
  377. #else
  378. SimulationCommData();
  379. #endif
  380. return 0;
  381. }
  382. int ParadigmNxV260::GetNxV260Q41VarMsg(int nAddr, char szCmd[MAX_CMD], char szRecvMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH])
  383. {
  384. int nRet = 0;
  385. if(
  386. strcmp(szCmd, "cmd-1") == 0 || strcmp(szCmd, "cmd-2") == 0 ||
  387. strcmp(szCmd, "cmd-3") == 0 || strcmp(szCmd, "cmd-4") == 0 ||
  388. strcmp(szCmd, "cmd-6") == 0 || strcmp(szCmd, "cmd-5") == 0 ||
  389. strcmp(szCmd, "cmd-6") == 0 || strcmp(szCmd, "cmd-7") == 0 ||
  390. strcmp(szCmd, "cmd-8") == 0 || strcmp(szCmd, "cmd-9") == 0 ||
  391. strcmp(szCmd, "cmd-10") == 0 || strcmp(szCmd, "cmd-11") == 0 ||
  392. strcmp(szCmd, "cmd-12") == 0 || strcmp(szCmd, "cmd-13") == 0
  393. )
  394. {
  395. #if IS_USE_READMSG_CS
  396. EnterCriticalSection( &m_csReadMsg );
  397. #endif
  398. DataConversion("FLOAT", m_szNxV260_41Msg[nAddr - 1] + nIndex, szRecvMsg, nLen,0,0 );
  399. #if IS_USE_READMSG_CS
  400. LeaveCriticalSection(&m_csReadMsg);
  401. #endif
  402. nRet = 0;
  403. }
  404. return nRet;
  405. }
  406. int ParadigmNxV260::GetNxV260QE1VarMsg(int nAddr, char szCmd[MAX_CMD], char szRecvMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH])
  407. {
  408. int nRet = 0;
  409. if(
  410. strcmp(szCmd, "cmd-14") == 0 || strcmp(szCmd, "cmd-15") == 0 ||
  411. strcmp(szCmd, "cmd-16") == 0 || strcmp(szCmd, "cmd-17") == 0 ||
  412. strcmp(szCmd, "cmd-18") == 0 || strcmp(szCmd, "cmd-19") == 0 ||
  413. strcmp(szCmd, "cmd-20") == 0 || strcmp(szCmd, "cmd-21") == 0 ||
  414. strcmp(szCmd, "cmd-22") == 0 || strcmp(szCmd, "cmd-23") == 0 ||
  415. strcmp(szCmd, "cmd-24") == 0 || strcmp(szCmd, "cmd-25") == 0 ||
  416. strcmp(szCmd, "cmd-26") == 0 || strcmp(szCmd, "cmd-27") == 0 ||
  417. strcmp(szCmd, "cmd-28") == 0
  418. )
  419. {
  420. #if IS_USE_READMSG_CS
  421. EnterCriticalSection( &m_csReadMsg );
  422. #endif
  423. DataConversion("FLOAT", m_szNxV260_E1Msg[nAddr - 1] + nIndex, szRecvMsg, nLen, 0, 0);
  424. #if IS_USE_READMSG_CS
  425. LeaveCriticalSection(&m_csReadMsg);
  426. #endif
  427. nRet = 0;
  428. }
  429. return nRet;
  430. }
  431. int ParadigmNxV260::GetNxV260QE2VarMsg(int nAddr, char szCmd[MAX_CMD], char szRecvMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH])
  432. {
  433. int nRet = 0;
  434. if(
  435. strcmp(szCmd, "cmd-29") == 0 || strcmp(szCmd, "cmd-30") == 0 ||
  436. strcmp(szCmd, "cmd-31") == 0 || strcmp(szCmd, "cmd-32") == 0 ||
  437. strcmp(szCmd, "cmd-33") == 0 || strcmp(szCmd, "cmd-34") == 0 ||
  438. strcmp(szCmd, "cmd-35") == 0 || strcmp(szCmd, "cmd-36") == 0 ||
  439. strcmp(szCmd, "cmd-37") == 0 || strcmp(szCmd, "cmd-38") == 0 ||
  440. strcmp(szCmd, "cmd-39") == 0 || strcmp(szCmd, "cmd-40") == 0 ||
  441. strcmp(szCmd, "cmd-41") == 0 || strcmp(szCmd, "cmd-42") == 0 ||
  442. strcmp(szCmd, "cmd-43") == 0
  443. )
  444. {
  445. #if IS_USE_READMSG_CS
  446. EnterCriticalSection( &m_csReadMsg );
  447. #endif
  448. DataConversion("FLOAT", m_szNxV260_E2Msg[nAddr - 1] + nIndex, szRecvMsg, nLen, 0, 0);
  449. #if IS_USE_READMSG_CS
  450. LeaveCriticalSection(&m_csReadMsg);
  451. #endif
  452. nRet = 0;
  453. }
  454. return nRet;
  455. }
  456. int ParadigmNxV260::GetNxV260QE3VarMsg(int nAddr, char szCmd[MAX_CMD], char szRecvMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH])
  457. {
  458. int nRet = 0;
  459. if(
  460. strcmp(szCmd, "cmd-44") == 0 || strcmp(szCmd, "cmd-45")== 0 ||
  461. strcmp(szCmd, "cmd-46")== 0 || strcmp(szCmd, "cmd-47")== 0 ||
  462. strcmp(szCmd, "cmd-48")== 0 || strcmp(szCmd, "cmd-49")== 0 ||
  463. strcmp(szCmd, "cmd-50")== 0 || strcmp(szCmd, "cmd-51")== 0 ||
  464. strcmp(szCmd, "cmd-52")== 0 || strcmp(szCmd, "cmd-53")== 0 ||
  465. strcmp(szCmd, "cmd-54")== 0 || strcmp(szCmd, "cmd-55")== 0 ||
  466. strcmp(szCmd, "cmd-56")== 0 || strcmp(szCmd, "cmd-57")== 0 ||
  467. strcmp(szCmd, "cmd-58")== 0 || strcmp(szCmd, "cmd-59")== 0 ||
  468. strcmp(szCmd, "cmd-60")== 0 || strcmp(szCmd, "cmd-61")== 0
  469. )
  470. {
  471. #if IS_USE_READMSG_CS
  472. EnterCriticalSection( &m_csReadMsg );
  473. #endif
  474. DataConversion("FLOAT", m_szNxV260_E3Msg[nAddr - 1] + nIndex, szRecvMsg, nLen, 0, 0);
  475. #if IS_USE_READMSG_CS
  476. LeaveCriticalSection(&m_csReadMsg);
  477. #endif
  478. nRet = 0;
  479. }
  480. return nRet;
  481. }
  482. int ParadigmNxV260::GetNxV260Q43VarMsg(int nAddr, char szCmd[MAX_CMD], char szRecvMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH])
  483. {
  484. int nRet = 0;
  485. if(
  486. strcmp(szCmd, "cmd-62")== 0 || strcmp(szCmd, "cmd-63")== 0 ||
  487. strcmp(szCmd, "cmd-64")== 0 || strcmp(szCmd, "cmd-65")== 0 ||
  488. strcmp(szCmd, "cmd-66")== 0 || strcmp(szCmd, "cmd-67")== 0 ||
  489. strcmp(szCmd, "cmd-68")== 0 || strcmp(szCmd, "cmd-69")== 0 ||
  490. strcmp(szCmd, "cmd-70")== 0 || strcmp(szCmd, "cmd-71")== 0 ||
  491. strcmp(szCmd, "cmd-72")== 0 || strcmp(szCmd, "cmd-73")== 0
  492. )
  493. {
  494. #if IS_USE_READMSG_CS
  495. EnterCriticalSection( &m_csReadMsg );
  496. #endif
  497. DataConversion("BYTE", m_szNxV260_43Msg[nAddr - 1] + nIndex, szRecvMsg, nLen, 0, 0);
  498. #if IS_USE_READMSG_CS
  499. LeaveCriticalSection(&m_csReadMsg);
  500. #endif
  501. nRet = 0;
  502. }
  503. return nRet;
  504. }
  505. int ParadigmNxV260::GetNxV260Q44VarMsg(int nAddr, char szCmd[MAX_CMD], char szRecvMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH])
  506. {
  507. int nRet = 0;
  508. if(
  509. strcmp(szCmd, "cmd-74")== 0 || strcmp(szCmd, "cmd-75")== 0 ||
  510. strcmp(szCmd, "cmd-76")== 0 || strcmp(szCmd, "cmd-77")== 0 ||
  511. strcmp(szCmd, "cmd-78")== 0 || strcmp(szCmd, "cmd-79")== 0 ||
  512. strcmp(szCmd, "cmd-80")== 0 || strcmp(szCmd, "cmd-81")== 0 ||
  513. strcmp(szCmd, "cmd-82")== 0 || strcmp(szCmd, "cmd-83")== 0 ||
  514. strcmp(szCmd, "cmd-84")== 0 || strcmp(szCmd, "cmd-85")== 0 ||
  515. strcmp(szCmd, "cmd-86")== 0 || strcmp(szCmd, "cmd-87")== 0 ||
  516. strcmp(szCmd, "cmd-88")== 0 || strcmp(szCmd, "cmd-89")== 0 ||
  517. strcmp(szCmd, "cmd-90")== 0 || strcmp(szCmd, "cmd-91")== 0 ||
  518. strcmp(szCmd, "cmd-92")== 0 || strcmp(szCmd, "cmd-93")== 0 ||
  519. strcmp(szCmd, "cmd-94")== 0 || strcmp(szCmd, "cmd-95")== 0 ||
  520. strcmp(szCmd, "cmd-96")== 0 || strcmp(szCmd, "cmd-97")== 0 ||
  521. strcmp(szCmd, "cmd-98")== 0 || strcmp(szCmd, "cmd-99")== 0 ||
  522. strcmp(szCmd, "cmd-100")== 0 || strcmp(szCmd, "cmd-101")== 0 ||
  523. strcmp(szCmd, "cmd-102")== 0 || strcmp(szCmd, "cmd-103")== 0 ||
  524. strcmp(szCmd, "cmd-104")== 0 || strcmp(szCmd, "cmd-105")== 0 ||
  525. strcmp(szCmd, "cmd-106")== 0 || strcmp(szCmd, "cmd-107")== 0 ||
  526. strcmp(szCmd, "cmd-108")== 0 || strcmp(szCmd, "cmd-109")== 0 ||
  527. strcmp(szCmd, "cmd-110")== 0 || strcmp(szCmd, "cmd-111")== 0 ||
  528. strcmp(szCmd, "cmd-112")== 0 || strcmp(szCmd, "cmd-113")== 0 ||
  529. strcmp(szCmd, "cmd-114")== 0 || strcmp(szCmd, "cmd-115")== 0 ||
  530. strcmp(szCmd, "cmd-116")== 0 || strcmp(szCmd, "cmd-117")== 0 ||
  531. strcmp(szCmd, "cmd-118")== 0 || strcmp(szCmd, "cmd-119")== 0 ||
  532. strcmp(szCmd, "cmd-120")== 0 || strcmp(szCmd, "cmd-121")== 0 ||
  533. strcmp(szCmd, "cmd-122")== 0 || strcmp(szCmd, "cmd-123")== 0 ||
  534. strcmp(szCmd, "cmd-124")== 0 || strcmp(szCmd, "cmd-125")== 0 ||
  535. strcmp(szCmd, "cmd-126")== 0 || strcmp(szCmd, "cmd-127")== 0 ||
  536. strcmp(szCmd, "cmd-128")== 0 || strcmp(szCmd, "cmd-129")== 0 ||
  537. strcmp(szCmd, "cmd-130")== 0 || strcmp(szCmd, "cmd-131")== 0 ||
  538. strcmp(szCmd, "cmd-132")== 0 || strcmp(szCmd, "cmd-133")== 0 ||
  539. strcmp(szCmd, "cmd-134")== 0 || strcmp(szCmd, "cmd-135")== 0 ||
  540. strcmp(szCmd, "cmd-136")== 0 || strcmp(szCmd, "cmd-137")== 0 ||
  541. strcmp(szCmd, "cmd-138")== 0 || strcmp(szCmd, "cmd-139")== 0 ||
  542. strcmp(szCmd, "cmd-140")== 0 || strcmp(szCmd, "cmd-141")== 0 ||
  543. strcmp(szCmd, "cmd-142")== 0
  544. )
  545. {
  546. #if IS_USE_READMSG_CS
  547. EnterCriticalSection( &m_csReadMsg );
  548. #endif
  549. DataConversion("BYTE", m_szNxV260_44Msg[nAddr - 1] + nIndex, szRecvMsg, nLen, 0, 0);
  550. #if IS_USE_READMSG_CS
  551. LeaveCriticalSection(&m_csReadMsg);
  552. #endif
  553. nRet = 0;
  554. }
  555. return nRet;
  556. }
  557. // 发送设置设备参数请求
  558. int ParadigmNxV260::SendSetReuest(
  559. char szPath[MAX_PATH], // 程序所在路径
  560. char szIniName[MAX_PATH], // 配置文件名称
  561. int nCommPort, // 串行端口
  562. int nAddr, // 设备地址
  563. char szCmd[MAX_CMD], // 请求命令
  564. char szRecvMsg[VAR_MSG], // 响应的值
  565. int nReversed1, // 预留整形参数1接口
  566. int nReversed2, // 预留整形参数2接口
  567. int nReversed3, // 预留整形参数3接口
  568. int nReversed4, // 预留整形参数4接口
  569. int nReversed5, // 预留整形参数5接口
  570. float fReversed1, // 预留float参数1接口
  571. float fReversed2, // 预留float参数2接口
  572. float fReversed3, // 预留float参数3接口
  573. char szReversed1[MAX_RESERVED1], // 预留字符数组参数1接口
  574. char szReversed2[MAX_RESERVED2], // 预留字符数组参数2接口
  575. char szReversed3[MAX_RESERVED3], // 预留字符数组参数3接口
  576. char szReversed4[MAX_RESERVED4], // 预留字符数组参数4接口
  577. char szReversed5[MAX_RESERVED5] // 预留字符数组参数5接口
  578. )
  579. {
  580. return 0;
  581. }
  582. void ParadigmNxV260::SetNxV260Q41VarMsg(int nAddr, char szCmd[MAX_CMD], char *pBuff)
  583. {
  584. if(
  585. strcmp(szCmd, "cmd-1") == 0 || strcmp(szCmd, "cmd-2") == 0 ||
  586. strcmp(szCmd, "cmd-3") == 0 || strcmp(szCmd, "cmd-4") == 0 ||
  587. strcmp(szCmd, "cmd-6") == 0 || strcmp(szCmd, "cmd-5") == 0 ||
  588. strcmp(szCmd, "cmd-6") == 0 || strcmp(szCmd, "cmd-7") == 0 ||
  589. strcmp(szCmd, "cmd-8") == 0 || strcmp(szCmd, "cmd-9") == 0 ||
  590. strcmp(szCmd, "cmd-10") == 0 || strcmp(szCmd, "cmd-11") == 0 ||
  591. strcmp(szCmd, "cmd-12") == 0 || strcmp(szCmd, "cmd-13") == 0 ||
  592. strcmp(szCmd, "cmd-14") == 0
  593. )
  594. {
  595. #if IS_USE_READMSG_CS
  596. EnterCriticalSection( &m_csReadMsg );
  597. #endif
  598. memcpy(m_szNxV260_41Msg[nAddr - 1], pBuff, sizeof(m_szNxV260_41Msg[nAddr - 1]));
  599. #if IS_USE_READMSG_CS
  600. LeaveCriticalSection(&m_csReadMsg);
  601. #endif
  602. }
  603. }
  604. void ParadigmNxV260::SetNxV260QE1VarMsg(int nAddr, char szCmd[MAX_CMD], char *pBuff)
  605. {
  606. if(
  607. strcmp(szCmd, "cmd-14") == 0 || strcmp(szCmd, "cmd-15") == 0 ||
  608. strcmp(szCmd, "cmd-16") == 0 || strcmp(szCmd, "cmd-17") == 0 ||
  609. strcmp(szCmd, "cmd-18") == 0 || strcmp(szCmd, "cmd-19") == 0 ||
  610. strcmp(szCmd, "cmd-20") == 0 || strcmp(szCmd, "cmd-21") == 0 ||
  611. strcmp(szCmd, "cmd-22") == 0 || strcmp(szCmd, "cmd-23") == 0 ||
  612. strcmp(szCmd, "cmd-24") == 0 || strcmp(szCmd, "cmd-25") == 0 ||
  613. strcmp(szCmd, "cmd-26") == 0 || strcmp(szCmd, "cmd-27") == 0 ||
  614. strcmp(szCmd, "cmd-28") == 0
  615. )
  616. {
  617. #if IS_USE_READMSG_CS
  618. EnterCriticalSection( &m_csReadMsg );
  619. #endif
  620. memcpy(m_szNxV260_E1Msg[nAddr - 1], pBuff, sizeof(m_szNxV260_E1Msg[nAddr - 1]));
  621. #if IS_USE_READMSG_CS
  622. LeaveCriticalSection(&m_csReadMsg);
  623. #endif
  624. }
  625. }
  626. void ParadigmNxV260::SetNxV260QE2VarMsg(int nAddr, char szCmd[MAX_CMD], char *pBuff)
  627. {
  628. if(
  629. strcmp(szCmd, "cmd-29") == 0 || strcmp(szCmd, "cmd-30") == 0 ||
  630. strcmp(szCmd, "cmd-31") == 0 || strcmp(szCmd, "cmd-32") == 0 ||
  631. strcmp(szCmd, "cmd-33") == 0 || strcmp(szCmd, "cmd-34") == 0 ||
  632. strcmp(szCmd, "cmd-35") == 0 || strcmp(szCmd, "cmd-36") == 0 ||
  633. strcmp(szCmd, "cmd-37") == 0 || strcmp(szCmd, "cmd-38") == 0 ||
  634. strcmp(szCmd, "cmd-39") == 0 || strcmp(szCmd, "cmd-40") == 0 ||
  635. strcmp(szCmd, "cmd-41") == 0 || strcmp(szCmd, "cmd-42") == 0 ||
  636. strcmp(szCmd, "cmd-43") == 0
  637. )
  638. {
  639. #if IS_USE_READMSG_CS
  640. EnterCriticalSection( &m_csReadMsg );
  641. #endif
  642. memcpy(m_szNxV260_E2Msg[nAddr - 1], pBuff, sizeof(m_szNxV260_E2Msg[nAddr - 1]));
  643. #if IS_USE_READMSG_CS
  644. LeaveCriticalSection(&m_csReadMsg);
  645. #endif
  646. }
  647. }
  648. void ParadigmNxV260::SetNxV260QE3VarMsg(int nAddr, char szCmd[MAX_CMD], char *pBuff)
  649. {
  650. if(
  651. strcmp(szCmd, "cmd-44") == 0 || strcmp(szCmd, "cmd-45")== 0 ||
  652. strcmp(szCmd, "cmd-46")== 0 || strcmp(szCmd, "cmd-47")== 0 ||
  653. strcmp(szCmd, "cmd-48")== 0 || strcmp(szCmd, "cmd-49")== 0 ||
  654. strcmp(szCmd, "cmd-50")== 0 || strcmp(szCmd, "cmd-51")== 0 ||
  655. strcmp(szCmd, "cmd-52")== 0 || strcmp(szCmd, "cmd-53")== 0 ||
  656. strcmp(szCmd, "cmd-54")== 0 || strcmp(szCmd, "cmd-55")== 0 ||
  657. strcmp(szCmd, "cmd-56")== 0 || strcmp(szCmd, "cmd-57")== 0 ||
  658. strcmp(szCmd, "cmd-58")== 0 || strcmp(szCmd, "cmd-59")== 0 ||
  659. strcmp(szCmd, "cmd-60")== 0 || strcmp(szCmd, "cmd-61")== 0
  660. )
  661. {
  662. #if IS_USE_READMSG_CS
  663. EnterCriticalSection( &m_csReadMsg );
  664. #endif
  665. memcpy(m_szNxV260_E3Msg[nAddr - 1], pBuff, sizeof(m_szNxV260_E3Msg[nAddr - 1]));
  666. #if IS_USE_READMSG_CS
  667. LeaveCriticalSection(&m_csReadMsg);
  668. #endif
  669. }
  670. }
  671. void ParadigmNxV260::SetNxV260Q43VarMsg(int nAddr, char szCmd[MAX_CMD], char *pBuff)
  672. {
  673. if(
  674. strcmp(szCmd, "cmd-62")== 0 || strcmp(szCmd, "cmd-63")== 0 ||
  675. strcmp(szCmd, "cmd-64")== 0 || strcmp(szCmd, "cmd-65")== 0 ||
  676. strcmp(szCmd, "cmd-66")== 0 || strcmp(szCmd, "cmd-67")== 0 ||
  677. strcmp(szCmd, "cmd-68")== 0 || strcmp(szCmd, "cmd-69")== 0 ||
  678. strcmp(szCmd, "cmd-70")== 0 || strcmp(szCmd, "cmd-71")== 0 ||
  679. strcmp(szCmd, "cmd-72")== 0 || strcmp(szCmd, "cmd-73")== 0
  680. )
  681. {
  682. #if IS_USE_READMSG_CS
  683. EnterCriticalSection( &m_csReadMsg );
  684. #endif
  685. memcpy(m_szNxV260_43Msg[nAddr - 1], pBuff, sizeof(m_szNxV260_43Msg[nAddr - 1]));
  686. #if IS_USE_READMSG_CS
  687. LeaveCriticalSection(&m_csReadMsg);
  688. #endif
  689. }
  690. }
  691. void ParadigmNxV260::SetNxV260Q44VarMsg(int nAddr, char szCmd[MAX_CMD], char *pBuff)
  692. {
  693. if(
  694. strcmp(szCmd, "cmd-74")== 0 || strcmp(szCmd, "cmd-75")== 0 ||
  695. strcmp(szCmd, "cmd-76")== 0 || strcmp(szCmd, "cmd-77")== 0 ||
  696. strcmp(szCmd, "cmd-78")== 0 || strcmp(szCmd, "cmd-79")== 0 ||
  697. strcmp(szCmd, "cmd-80")== 0 || strcmp(szCmd, "cmd-81")== 0 ||
  698. strcmp(szCmd, "cmd-82")== 0 || strcmp(szCmd, "cmd-83")== 0 ||
  699. strcmp(szCmd, "cmd-84")== 0 || strcmp(szCmd, "cmd-85")== 0 ||
  700. strcmp(szCmd, "cmd-86")== 0 || strcmp(szCmd, "cmd-87")== 0 ||
  701. strcmp(szCmd, "cmd-88")== 0 || strcmp(szCmd, "cmd-89")== 0 ||
  702. strcmp(szCmd, "cmd-90")== 0 || strcmp(szCmd, "cmd-91")== 0 ||
  703. strcmp(szCmd, "cmd-92")== 0 || strcmp(szCmd, "cmd-93")== 0 ||
  704. strcmp(szCmd, "cmd-94")== 0 || strcmp(szCmd, "cmd-95")== 0 ||
  705. strcmp(szCmd, "cmd-96")== 0 || strcmp(szCmd, "cmd-97")== 0 ||
  706. strcmp(szCmd, "cmd-98")== 0 || strcmp(szCmd, "cmd-99")== 0 ||
  707. strcmp(szCmd, "cmd-100")== 0 || strcmp(szCmd, "cmd-101")== 0 ||
  708. strcmp(szCmd, "cmd-102")== 0 || strcmp(szCmd, "cmd-103")== 0 ||
  709. strcmp(szCmd, "cmd-104")== 0 || strcmp(szCmd, "cmd-105")== 0 ||
  710. strcmp(szCmd, "cmd-106")== 0 || strcmp(szCmd, "cmd-107")== 0 ||
  711. strcmp(szCmd, "cmd-108")== 0 || strcmp(szCmd, "cmd-109")== 0 ||
  712. strcmp(szCmd, "cmd-110")== 0 || strcmp(szCmd, "cmd-111")== 0 ||
  713. strcmp(szCmd, "cmd-112")== 0 || strcmp(szCmd, "cmd-113")== 0 ||
  714. strcmp(szCmd, "cmd-114")== 0 || strcmp(szCmd, "cmd-115")== 0 ||
  715. strcmp(szCmd, "cmd-116")== 0 || strcmp(szCmd, "cmd-117")== 0 ||
  716. strcmp(szCmd, "cmd-118")== 0 || strcmp(szCmd, "cmd-119")== 0 ||
  717. strcmp(szCmd, "cmd-120")== 0 || strcmp(szCmd, "cmd-121")== 0 ||
  718. strcmp(szCmd, "cmd-122")== 0 || strcmp(szCmd, "cmd-123")== 0 ||
  719. strcmp(szCmd, "cmd-124")== 0 || strcmp(szCmd, "cmd-125")== 0 ||
  720. strcmp(szCmd, "cmd-126")== 0 || strcmp(szCmd, "cmd-127")== 0 ||
  721. strcmp(szCmd, "cmd-128")== 0 || strcmp(szCmd, "cmd-129")== 0 ||
  722. strcmp(szCmd, "cmd-130")== 0 || strcmp(szCmd, "cmd-131")== 0 ||
  723. strcmp(szCmd, "cmd-132")== 0 || strcmp(szCmd, "cmd-133")== 0 ||
  724. strcmp(szCmd, "cmd-134")== 0 || strcmp(szCmd, "cmd-135")== 0 ||
  725. strcmp(szCmd, "cmd-136")== 0 || strcmp(szCmd, "cmd-137")== 0 ||
  726. strcmp(szCmd, "cmd-138")== 0 || strcmp(szCmd, "cmd-139")== 0 ||
  727. strcmp(szCmd, "cmd-140")== 0 || strcmp(szCmd, "cmd-141")== 0 ||
  728. strcmp(szCmd, "cmd-142")== 0
  729. )
  730. {
  731. #if IS_USE_READMSG_CS
  732. EnterCriticalSection( &m_csReadMsg );
  733. #endif
  734. memcpy(m_szNxV260_44Msg[nAddr - 1], pBuff, sizeof(m_szNxV260_44Msg[nAddr - 1]));
  735. #if IS_USE_READMSG_CS
  736. LeaveCriticalSection(&m_csReadMsg);
  737. #endif
  738. }
  739. }
  740. UINT ParadigmNxV260::GetCheckSum(char *pBuf, char chDest[5], int len)
  741. {
  742. WORD iSum = 0;;
  743. for(int i=0; i<len; i++)//求和
  744. {
  745. iSum += pBuf[i];
  746. }
  747. WORD iCompliment = iSum;
  748. iCompliment = ~iCompliment;//取反
  749. iCompliment++;
  750. itoa(iCompliment, chDest, 16);
  751. chDest[0] = lowercase2uppercase(chDest[0]);
  752. chDest[1] = lowercase2uppercase(chDest[1]);
  753. chDest[2] = lowercase2uppercase(chDest[2]);
  754. chDest[3] = lowercase2uppercase(chDest[3]);
  755. return atoi(chDest);
  756. }
  757. WORD ParadigmNxV260::RtnCheck(char szRecvdMsg[],int len)
  758. {
  759. char ch[2] = {0};
  760. ch[0] = szRecvdMsg[7];
  761. ch[1] = szRecvdMsg[8];
  762. if (atoi(ch) == 0)
  763. {
  764. return ERR_CODE_RTN_NATURAL;
  765. }
  766. else if (atoi(ch) ==1)
  767. {
  768. return ERR_CODE_RTN_VER_ERROR;
  769. }
  770. else if (atoi(ch) ==2)
  771. {
  772. return ERR_CODE_RTN_CHKSUM_ERROR;
  773. }
  774. else if (atoi(ch) ==3)
  775. {
  776. return ERR_CODE_RTN_LCHKSUM_ERROR;
  777. }
  778. else if (atoi(ch) ==4)
  779. {
  780. return ERR_CODE_RTN_CID2_ERROR;
  781. }
  782. else if (atoi(ch) ==5)
  783. {
  784. return ERR_CODE_RTN_COMMAND_FORMAT;
  785. }
  786. else if (atoi(ch) ==6)
  787. {
  788. return ERR_CODE_RTN_INVALID_DATA;
  789. }
  790. else if (atoi(ch) ==16)
  791. {
  792. return ERR_CODE_RTN_INVALID_LIMIT;
  793. }
  794. return -1;
  795. }
  796. int ParadigmNxV260::GetNxV260FromIni(
  797. char szPath[MAX_PATH], //服务器程序所在目录
  798. char szIniName[MAX_PATH], //配置文件名
  799. char szCmd[MAX_CMD], //命令
  800. char szSendCmd[MAX_CMD], //发送Buffer
  801. char nType[MAX_CMD],
  802. int &nIndex,
  803. int &nLen
  804. )
  805. {
  806. CHAR szFile[MAX_PATH + 1] = "";
  807. wsprintf(szFile, "%s\\config\\%s", szPath, szIniName);
  808. GetPrivateProfileString(szCmd, "SendCmd", "", szSendCmd, 10, szFile);
  809. szSendCmd[strlen(szSendCmd)] = '\0';
  810. //GetPrivateProfileString(szCmd, "type", "", nType, 10, szFile);
  811. //nType[strlen(nType)] = '\0';
  812. nIndex = GetPrivateProfileInt(szCmd, "Index", 0, szFile);
  813. nLen = GetPrivateProfileInt(szCmd, "Len", 0, szFile);
  814. return 0;
  815. }
  816. void ParadigmNxV260::SimulationCommData(void)
  817. {
  818. }