复件 PB9315.cpp 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005
  1. #include "StdAfx.h"
  2. #include ".\pb9315.h"
  3. #include "StdAfx.h"
  4. #include "CommProcess.h"
  5. #include ".\cms.h"
  6. CPB9315::CPB9315(
  7. char szPath[MAX_PATH], // 程序所在路径 ;
  8. char szIniName[MAX_PATH], // 配置文件名称;
  9. int nCommPort, // 串行端口;
  10. int nAddr, // 设备地址;
  11. int nRate, // 波特率 ;
  12. int nDataBit, // 数据位;
  13. int nStopBit, // 停止位;
  14. int nParity, // 校验位;
  15. int nInterval // 时间间隔;
  16. )
  17. {
  18. #if IS_USE_READMSG_CS
  19. InitializeCriticalSection( &m_csReadMsg ); //初始化一个临界资源对象;
  20. #endif
  21. MTVERIFY( m_hSemComm = CreateEvent( NULL, TRUE, TRUE, 0 ) ); //创建或打开一个命名的或无名的事件对象;
  22. memset(m_sz_33Msg, 0, sizeof(m_sz_33Msg));
  23. memset(m_sz_34Msg, 0, sizeof(m_sz_34Msg));
  24. memset(m_sz_35Msg, 0, sizeof(m_sz_35Msg));
  25. memset(m_szTemp, 0, sizeof(m_szTemp));
  26. memset(szProcessData, 0, sizeof(szProcessData));
  27. m_devOnline= TRUE;
  28. m_dwOnlineTick = 0;
  29. m_bRun = FALSE;
  30. }
  31. CPB9315::~CPB9315()
  32. {
  33. #if IS_USE_READMSG_CS
  34. DeleteCriticalSection( &m_csReadMsg );
  35. #endif
  36. MTVERIFY( CloseHandle( m_hSemComm ) );
  37. CloseComm();
  38. }
  39. BOOL CPB9315::PB9315OpenComm(int nCommPort, int nAddr, int nRate, int nDataBit, int nStopBit, int nParity, int nInterval)
  40. {
  41. BOOL bResult = FALSE;
  42. bResult = OpenComm( nCommPort, nAddr, nRate, nDataBit, nStopBit, nParity, nInterval );
  43. return bResult;
  44. }
  45. int CPB9315::Authorization(CCommProcess *pComm)
  46. {
  47. int nRet = 0;
  48. /************************************************************************/
  49. /* SendMsg */
  50. /************************************************************************/
  51. BYTE SendPart[7] = {0};
  52. SendPart[0] = 0xAB;
  53. SendPart[1] = 0x04;
  54. SendPart[2] = 0xCF;
  55. SendPart[3] = 0x69;
  56. SendPart[4] = 0xE8;
  57. SendPart[5] = 0xD5;
  58. SendPart[6] = 0x5C;
  59. //WaitForSingObject();等待有信号;
  60. if( WaitForSingleObject( m_hSemComm, 0 ) == WAIT_OBJECT_0 ) {
  61. //ResetEvent()设置无信号状态
  62. ResetEvent( m_hSemComm );
  63. int nResult = pComm->Write(SendPart, 7);
  64. if( nResult != 7 ) {
  65. //SetEvent设置有信号;
  66. SetEvent( m_hSemComm );
  67. //返回 错误值;
  68. return EER_CODE_PB9315_COM_REGNUM;
  69. }
  70. }
  71. else{
  72. //如果m_hSemCom无信号,返回错误;
  73. return ERR_CODE_PB9315_COM_BUSY;
  74. }
  75. /************************************************************************/
  76. /* readfile ; */
  77. /************************************************************************/
  78. int nRecvLen = 0;
  79. BYTE pBuffer[270];
  80. memset(pBuffer, 0, 270);
  81. nRecvLen = pComm->Read(pBuffer,270);
  82. SetEvent( m_hSemComm );
  83. return 0;
  84. }
  85. int CPB9315::OnlyRequested(CCommProcess *pComm)
  86. {
  87. int nRet = 0;
  88. /************************************************************************/
  89. /* SendMsg */
  90. /************************************************************************/
  91. BYTE SendPart[4] = {0};
  92. SendPart[0] = 0xAB;
  93. SendPart[1] = 0x01;
  94. SendPart[2] = 0xA0;
  95. SendPart[3] = 0xB4;
  96. //WaitForSingObject();等待有信号;
  97. if( WaitForSingleObject( m_hSemComm, 0 ) == WAIT_OBJECT_0 ) {
  98. //ResetEvent()设置无信号状态
  99. ResetEvent( m_hSemComm );
  100. int nResult = pComm->Write(SendPart, 4);
  101. if( nResult != 4 ) {
  102. //SetEvent设置有信号;
  103. SetEvent( m_hSemComm );
  104. //返回 错误值;
  105. return EER_CODE_PB9315_COM_REGNUM;
  106. }
  107. }
  108. else{
  109. //如果m_hSemCom无信号,返回错误;
  110. return ERR_CODE_PB9315_COM_BUSY;
  111. }
  112. /************************************************************************/
  113. /* readfile ; */
  114. /************************************************************************/
  115. int nRecvLen = 0;
  116. BYTE pBuffer[270];
  117. memset(pBuffer, 0, 270);
  118. nRecvLen = pComm->Read(pBuffer,270);
  119. SetEvent( m_hSemComm );
  120. return 0;
  121. }
  122. int CPB9315::ReadSetingData(CCommProcess *pComm)
  123. {
  124. int nRet = 0;
  125. /************************************************************************/
  126. /* SendMsg */
  127. /************************************************************************/
  128. BYTE SendPart[4] = {0};
  129. SendPart[0] = 0xAB;
  130. SendPart[1] = 0x01;
  131. SendPart[2] = 0x31;
  132. SendPart[3] = 0x23;
  133. //WaitForSingObject();等待有信号;
  134. if( WaitForSingleObject( m_hSemComm, 0 ) == WAIT_OBJECT_0 ) {
  135. //ResetEvent()设置无信号状态
  136. ResetEvent( m_hSemComm );
  137. int nResult = pComm->Write(SendPart, 4);
  138. if( nResult != 4 ) {
  139. //SetEvent设置有信号;
  140. SetEvent( m_hSemComm );
  141. //返回 错误值;
  142. return EER_CODE_PB9315_COM_REGNUM;
  143. }
  144. }
  145. else{
  146. //如果m_hSemCom无信号,返回错误;
  147. return ERR_CODE_PB9315_COM_BUSY;
  148. }
  149. /************************************************************************/
  150. /* readfile ; */
  151. /************************************************************************/
  152. int nRecvLen = 0;
  153. BYTE pBuffer[270];
  154. memset(pBuffer, 0, 270);
  155. nRecvLen = pComm->Read(pBuffer,270);
  156. SetEvent( m_hSemComm );
  157. return 0;
  158. }
  159. // 发送读取设备参数请求;
  160. int CPB9315::SendReadRequest(
  161. char szPath[MAX_PATH], // 程序所在路径 ;
  162. char szIniName[MAX_PATH], // 配置文件名称 ;
  163. int nCommPort, // 串行端口;
  164. int nAddr, // 设备地址;
  165. char szCmd[MAX_CMD], // 请求命令;
  166. char szMsg[VAR_MSG], // 响应的值 ;
  167. int nReversed1, // 预留整形参数1接口
  168. int nReversed2, // 预留整形参数2接口
  169. int nReversed3, // 预留整形参数3接口
  170. int nReversed4, // 预留整形参数4接口
  171. int nReversed5, // 预留整形参数5接口
  172. float fReversed1, // 预留float参数1接口
  173. float fReversed2, // 预留float参数2接口
  174. float fReversed3, // 预留float参数3接口
  175. char szReversed1[MAX_RESERVED1], // 预留字符数组参数1接口
  176. char szReversed2[MAX_RESERVED2], // 预留字符数组参数2接口
  177. char szReversed3[MAX_RESERVED3], // 预留字符数组参数3接口
  178. char szReversed4[MAX_RESERVED4], // 预留字符数组参数4接口
  179. char szReversed5[MAX_RESERVED5] // 预留字符数组参数5接口
  180. )
  181. {
  182. int nIndex = 0, nLen = 0;
  183. BYTE IniSendCMD = 0;
  184. char szType[TYPE_LENGTH] = {0};
  185. char szScreen[MAX_CMD] = {0};
  186. int StartBit = 0;
  187. int EndBit = 0;
  188. GetPB9315IniInfo(szPath, szIniName, szCmd, IniSendCMD, szType, nIndex, nLen, StartBit, EndBit);
  189. CCommProcess *pComm = FindComm(nCommPort);
  190. if (!m_bRun)
  191. {
  192. Authorization(pComm);
  193. OnlyRequested(pComm);
  194. ReadSetingData(pComm);
  195. m_bRun = TRUE;
  196. }
  197. if( pComm == NULL ) return -1;
  198. int nRet = -1;
  199. if(
  200. (strlen(m_sz_33Msg) == 0 &&
  201. (
  202. strcmp(szCmd, "cmd-1") == 0 || strcmp(szCmd, "cmd-2") == 0 || strcmp(szCmd, "cmd-3") == 0 ||
  203. strcmp(szCmd, "cmd-4") == 0 || strcmp(szCmd, "cmd-6") == 0 || strcmp(szCmd, "cmd-5") == 0 ||
  204. strcmp(szCmd, "cmd-7") == 0 || strcmp(szCmd, "cmd-8") == 0 || strcmp(szCmd, "cmd-9") == 0 ||
  205. strcmp(szCmd, "cmd-10") == 0 || strcmp(szCmd, "cmd-11") == 0 || strcmp(szCmd, "cmd-12") == 0 ||
  206. strcmp(szCmd, "cmd-13") == 0 || strcmp(szCmd, "cmd-14") == 0
  207. )) ||
  208. (strlen(m_sz_34Msg) == 0 &&
  209. (
  210. strcmp(szCmd, "cmd-15") == 0 || strcmp(szCmd, "cmd-16") == 0 || strcmp(szCmd, "cmd-17") == 0 ||
  211. strcmp(szCmd, "cmd-18") == 0 || strcmp(szCmd, "cmd-19") == 0 || strcmp(szCmd, "cmd-20") == 0 ||
  212. strcmp(szCmd, "cmd-21") == 0 || strcmp(szCmd, "cmd-22") == 0 || strcmp(szCmd, "cmd-23") == 0 ||
  213. strcmp(szCmd, "cmd-24") == 0 || strcmp(szCmd, "cmd-25") == 0 || strcmp(szCmd, "cmd-26") == 0 ||
  214. strcmp(szCmd, "cmd-27") == 0 || strcmp(szCmd, "cmd-28") == 0 || strcmp(szCmd, "cmd-29") == 0 || strcmp(szCmd, "cmd-30") == 0 ||
  215. strcmp(szCmd, "cmd-31") == 0 || strcmp(szCmd, "cmd-32") == 0 || strcmp(szCmd, "cmd-33") == 0 ||
  216. strcmp(szCmd, "cmd-34") == 0 || strcmp(szCmd, "cmd-35") == 0 || strcmp(szCmd, "cmd-36") == 0 ||
  217. strcmp(szCmd, "cmd-37") == 0 || strcmp(szCmd, "cmd-38") == 0 || strcmp(szCmd, "cmd-39") == 0 ||
  218. strcmp(szCmd, "cmd-40") == 0 || strcmp(szCmd, "cmd-41") == 0 || strcmp(szCmd, "cmd-42") == 0 ||
  219. strcmp(szCmd, "cmd-43") == 0 || strcmp(szCmd, "cmd-44") == 0 || strcmp(szCmd, "cmd-45") == 0 ||
  220. strcmp(szCmd, "cmd-46") == 0 || strcmp(szCmd, "cmd-47") == 0 || strcmp(szCmd, "cmd-48") == 0 ||
  221. strcmp(szCmd, "cmd-49") == 0 || strcmp(szCmd, "cmd-50") == 0 || strcmp(szCmd, "cmd-51") == 0 ||
  222. strcmp(szCmd, "cmd-52") == 0 || strcmp(szCmd, "cmd-53") == 0 ))
  223. ||
  224. (strlen(m_sz_35Msg) == 0 &&
  225. (
  226. strcmp(szCmd, "cmd-54") == 0 ||strcmp(szCmd, "cmd-55") == 0 || strcmp(szCmd, "cmd-56") == 0 || strcmp(szCmd, "cmd-57") == 0 ||
  227. strcmp(szCmd, "cmd-58") == 0 || strcmp(szCmd, "cmd-59") == 0 || strcmp(szCmd, "cmd-60") == 0 ||
  228. strcmp(szCmd, "cmd-61") == 0 || strcmp(szCmd, "cmd-62") == 0 || strcmp(szCmd, "cmd-63") == 0 ||
  229. strcmp(szCmd, "cmd-64") == 0 || strcmp(szCmd, "cmd-65") == 0 || strcmp(szCmd, "cmd-66") == 0 ||
  230. strcmp(szCmd, "cmd-67") == 0 || strcmp(szCmd, "cmd-68") == 0 || strcmp(szCmd, "cmd-69") == 0 ||
  231. strcmp(szCmd, "cmd-60") == 0 || strcmp(szCmd, "cmd-61") == 0 || strcmp(szCmd, "cmd-62") == 0 ||
  232. strcmp(szCmd, "cmd-63") == 0 || strcmp(szCmd, "cmd-64") == 0 || strcmp(szCmd, "cmd-65") == 0 ||
  233. strcmp(szCmd, "cmd-66") == 0 || strcmp(szCmd, "cmd-67") == 0 || strcmp(szCmd, "cmd-68") == 0 ||
  234. strcmp(szCmd, "cmd-69") == 0 || strcmp(szCmd, "cmd-70") == 0 || strcmp(szCmd, "cmd-71") == 0 ||
  235. strcmp(szCmd, "cmd-72") == 0 || strcmp(szCmd, "cmd-73") == 0 || strcmp(szCmd, "cmd-74") == 0 ||
  236. strcmp(szCmd, "cmd-75") == 0 || strcmp(szCmd, "cmd-76") == 0 || strcmp(szCmd, "cmd-77") == 0 ||
  237. strcmp(szCmd, "cmd-78") == 0 || strcmp(szCmd, "cmd-79") == 0 || strcmp(szCmd, "cmd-80") == 0 ||
  238. strcmp(szCmd, "cmd-81") == 0 || strcmp(szCmd, "cmd-82") == 0 || strcmp(szCmd, "cmd-83") == 0 ||
  239. strcmp(szCmd, "cmd-84") == 0 || strcmp(szCmd, "cmd-85") == 0 || strcmp(szCmd, "cmd-86") == 0 ||
  240. strcmp(szCmd, "cmd-87") == 0 || strcmp(szCmd, "cmd-88") == 0 || strcmp(szCmd, "cmd-89") == 0 ||
  241. strcmp(szCmd, "cmd-90") == 0 || strcmp(szCmd, "cmd-91") == 0 || strcmp(szCmd, "cmd-92") == 0 ||
  242. strcmp(szCmd, "cmd-93") == 0 || strcmp(szCmd, "cmd-94") == 0 || strcmp(szCmd, "cmd-95") == 0))
  243. ||
  244. strcmp(szCmd, "cmd-1") == 0 || strcmp(szCmd, "cmd-14") == 0 || strcmp(szCmd, "cmd-15") == 0 ||
  245. strcmp(szCmd, "cmd-53") == 0 || strcmp(szCmd, "cmd-54") == 0 || strcmp(szCmd, "cmd-95") == 0 ||
  246. strcmp(szCmd, "cmd-33") == 0 || strcmp(szCmd, "cmd-51") == 0 || strcmp(szCmd, "cmd-95") == 0
  247. )
  248. {
  249. nRet = GetDeviceParam(pComm, IniSendCMD, szCmd, szMsg, nIndex, nLen, szType );
  250. if( nRet != 0 ) return nRet;
  251. }
  252. if( GetTickCount() - m_dwOnlineTick > 60 *1000 && m_dwOnlineTick > 0 )
  253. {
  254. m_devOnline = FALSE;
  255. }
  256. else if( GetTickCount() - m_dwOnlineTick< 60 *1000 && m_dwOnlineTick > 0 )
  257. {
  258. m_devOnline = TRUE;
  259. }
  260. if( m_devOnline == FALSE )
  261. {
  262. return -1;
  263. }
  264. nRet = Get33VarMsg( szCmd, szMsg, nIndex, nLen, szType, StartBit, EndBit);
  265. nRet = Get34VarMsg( szCmd, szMsg, nIndex, nLen, szType, StartBit, EndBit);
  266. nRet = Get35VarMsg( szCmd, szMsg, nIndex, nLen, szType, StartBit, EndBit);
  267. LOG4C((LOG_NOTICE,"nRet = %d,cmd = %s,值 = %s",nRet,szCmd,szMsg));
  268. return nRet;
  269. }
  270. int CPB9315::GetDeviceParam(
  271. CCommProcess *pComm,
  272. BYTE &IniSendCMD,
  273. char szCmd[MAX_CMD],
  274. char szMsg[VAR_MSG],
  275. int &nIndex,
  276. int &nLen,
  277. char szType[TYPE_LENGTH])
  278. {
  279. int nRet = -1;
  280. nRet = RequestReadStatus(szCmd, pComm, IniSendCMD);
  281. if( nRet != 0 )
  282. {
  283. return nRet;
  284. }
  285. nRet = ResponseReadStatus(pComm, szCmd, szMsg, nIndex, nLen, szType);
  286. return nRet;
  287. }
  288. int CPB9315::RequestReadStatus(char szCmd[MAX_CMD], CCommProcess *pComm, BYTE &IniSendCMD)
  289. {
  290. int nRet = -1;
  291. #if DEBUG_PB9315
  292. BYTE byArray[4];
  293. ZeroMemory(&byArray,4);
  294. byArray[0] = 0xAB;
  295. byArray[1] = 0x01;
  296. byArray[2] = IniSendCMD; // 命令;
  297. byArray[3] = GetEndCheck((char *)byArray,3); // 校验;
  298. //LOG4C_HEX_DUMP((LOG_NOTICE, (char *)&RequestPara, sizeof(RequestPara)));
  299. if( WaitForSingleObject( m_hSemComm, 0 ) == WAIT_OBJECT_0 ) { // 有信号才写串口;
  300. ResetEvent( m_hSemComm );
  301. int nResult = pComm->Write((BYTE *)&byArray, 4);
  302. if( nResult == 4 ){
  303. }
  304. else{
  305. SetEvent( m_hSemComm );
  306. return EER_CODE_PB9315_COM_WRITE_DATA;
  307. }
  308. }
  309. else{
  310. return ERR_CODE_PB9315_COM_BUSY;
  311. }
  312. #endif
  313. return 0;
  314. }
  315. int CPB9315::ResponseReadStatus(
  316. CCommProcess *pComm,
  317. char szCmd[MAX_CMD],
  318. char szMsg[VAR_MSG],
  319. int &nIndex,
  320. int &nLen,
  321. char szType[TYPE_LENGTH]
  322. )
  323. {
  324. #if DEBUG_PB9315
  325. int nRecvLen = 0;
  326. char *pBuffer = new char[270];
  327. memset(pBuffer, 0, 270);
  328. nRecvLen = pComm->Read((BYTE *)pBuffer,270);
  329. if( nRecvLen <= 0)
  330. {
  331. SetEvent( m_hSemComm );
  332. if( pBuffer != NULL)
  333. {
  334. delete[] pBuffer;
  335. pBuffer = NULL;
  336. }
  337. return ERR_CODE_PB9315_COM_READ_NO_DATA;
  338. }
  339. Set33VarMsg( szCmd, pBuffer);
  340. Set34VarMsg( szCmd, pBuffer);
  341. Set35VarMsg( szCmd, pBuffer);
  342. m_dwOnlineTick = GetTickCount();
  343. SetEvent( m_hSemComm );
  344. if( pBuffer != NULL)
  345. {
  346. delete[] pBuffer;
  347. pBuffer = NULL;
  348. }
  349. #else
  350. SimulationCommData();
  351. #endif
  352. return 0;
  353. }
  354. void CPB9315::Set33VarMsg( char szCmd[MAX_CMD], char *pBuffer)
  355. {
  356. if( strcmp(szCmd, "cmd-1") == 0 || strcmp(szCmd, "cmd-2") == 0 || strcmp(szCmd, "cmd-3") == 0 ||
  357. strcmp(szCmd, "cmd-4") == 0 || strcmp(szCmd, "cmd-6") == 0 || strcmp(szCmd, "cmd-5") == 0 ||
  358. strcmp(szCmd, "cmd-7") == 0 || strcmp(szCmd, "cmd-8") == 0 || strcmp(szCmd, "cmd-9") == 0 ||
  359. strcmp(szCmd, "cmd-10") == 0 || strcmp(szCmd, "cmd-11") == 0 || strcmp(szCmd, "cmd-12") == 0 ||
  360. strcmp(szCmd, "cmd-13") == 0 || strcmp(szCmd, "cmd-14") == 0 )
  361. {
  362. #if IS_USE_READMSG_CS
  363. EnterCriticalSection( &m_csReadMsg );
  364. #endif
  365. memcpy(m_sz_33Msg, pBuffer + 4, sizeof(m_sz_33Msg));
  366. #if IS_USE_READMSG_CS
  367. LeaveCriticalSection(&m_csReadMsg);
  368. #endif
  369. }
  370. }
  371. void CPB9315::Set34VarMsg( char szCmd[MAX_CMD], char *pBuffer)
  372. {
  373. if( strcmp(szCmd, "cmd-15") == 0 || strcmp(szCmd, "cmd-16") == 0 || strcmp(szCmd, "cmd-17") == 0 ||
  374. strcmp(szCmd, "cmd-18") == 0 || strcmp(szCmd, "cmd-19") == 0 || strcmp(szCmd, "cmd-20") == 0 ||
  375. strcmp(szCmd, "cmd-21") == 0 || strcmp(szCmd, "cmd-22") == 0 || strcmp(szCmd, "cmd-23") == 0 ||
  376. strcmp(szCmd, "cmd-24") == 0 || strcmp(szCmd, "cmd-25") == 0 || strcmp(szCmd, "cmd-26") == 0 ||
  377. strcmp(szCmd, "cmd-27") == 0 || strcmp(szCmd, "cmd-28") == 0 || strcmp(szCmd, "cmd-29") == 0 || strcmp(szCmd, "cmd-30") == 0 ||
  378. strcmp(szCmd, "cmd-31") == 0 || strcmp(szCmd, "cmd-32") == 0 || strcmp(szCmd, "cmd-33") == 0 ||
  379. strcmp(szCmd, "cmd-34") == 0 || strcmp(szCmd, "cmd-35") == 0 || strcmp(szCmd, "cmd-36") == 0 ||
  380. strcmp(szCmd, "cmd-37") == 0 || strcmp(szCmd, "cmd-38") == 0 || strcmp(szCmd, "cmd-39") == 0 ||
  381. strcmp(szCmd, "cmd-40") == 0 || strcmp(szCmd, "cmd-41") == 0 || strcmp(szCmd, "cmd-42") == 0 ||
  382. strcmp(szCmd, "cmd-43") == 0 || strcmp(szCmd, "cmd-44") == 0 || strcmp(szCmd, "cmd-45") == 0 ||
  383. strcmp(szCmd, "cmd-46") == 0 || strcmp(szCmd, "cmd-47") == 0 || strcmp(szCmd, "cmd-48") == 0 ||
  384. strcmp(szCmd, "cmd-49") == 0 || strcmp(szCmd, "cmd-50") == 0 || strcmp(szCmd, "cmd-51") == 0 ||
  385. strcmp(szCmd, "cmd-52") == 0 || strcmp(szCmd, "cmd-53") == 0 )
  386. {
  387. #if IS_USE_READMSG_CS
  388. EnterCriticalSection( &m_csReadMsg );
  389. #endif
  390. memset(m_szTemp,0,1024);
  391. memcpy(m_szTemp,pBuffer,sizeof(m_szTemp));
  392. GetDataSection();
  393. #if IS_USE_READMSG_CS
  394. LeaveCriticalSection(&m_csReadMsg);
  395. #endif
  396. }
  397. }
  398. void CPB9315::Set35VarMsg( char szCmd[MAX_CMD], char *pBuffer)
  399. {
  400. if( strcmp(szCmd, "cmd-54") == 0 ||strcmp(szCmd, "cmd-55") == 0 || strcmp(szCmd, "cmd-56") == 0 || strcmp(szCmd, "cmd-57") == 0 ||
  401. strcmp(szCmd, "cmd-58") == 0 || strcmp(szCmd, "cmd-59") == 0 || strcmp(szCmd, "cmd-60") == 0 ||
  402. strcmp(szCmd, "cmd-61") == 0 || strcmp(szCmd, "cmd-62") == 0 || strcmp(szCmd, "cmd-63") == 0 ||
  403. strcmp(szCmd, "cmd-64") == 0 || strcmp(szCmd, "cmd-65") == 0 || strcmp(szCmd, "cmd-66") == 0 ||
  404. strcmp(szCmd, "cmd-67") == 0 || strcmp(szCmd, "cmd-68") == 0 || strcmp(szCmd, "cmd-69") == 0 ||
  405. strcmp(szCmd, "cmd-60") == 0 || strcmp(szCmd, "cmd-61") == 0 || strcmp(szCmd, "cmd-62") == 0 ||
  406. strcmp(szCmd, "cmd-63") == 0 || strcmp(szCmd, "cmd-64") == 0 || strcmp(szCmd, "cmd-65") == 0 ||
  407. strcmp(szCmd, "cmd-66") == 0 || strcmp(szCmd, "cmd-67") == 0 || strcmp(szCmd, "cmd-68") == 0 ||
  408. strcmp(szCmd, "cmd-69") == 0 || strcmp(szCmd, "cmd-70") == 0 || strcmp(szCmd, "cmd-71") == 0 ||
  409. strcmp(szCmd, "cmd-72") == 0 || strcmp(szCmd, "cmd-73") == 0 || strcmp(szCmd, "cmd-74") == 0 ||
  410. strcmp(szCmd, "cmd-75") == 0 || strcmp(szCmd, "cmd-76") == 0 || strcmp(szCmd, "cmd-77") == 0 ||
  411. strcmp(szCmd, "cmd-78") == 0 || strcmp(szCmd, "cmd-79") == 0 || strcmp(szCmd, "cmd-80") == 0 ||
  412. strcmp(szCmd, "cmd-81") == 0 || strcmp(szCmd, "cmd-82") == 0 || strcmp(szCmd, "cmd-83") == 0 ||
  413. strcmp(szCmd, "cmd-84") == 0 || strcmp(szCmd, "cmd-85") == 0 || strcmp(szCmd, "cmd-86") == 0 ||
  414. strcmp(szCmd, "cmd-87") == 0 || strcmp(szCmd, "cmd-88") == 0 || strcmp(szCmd, "cmd-89") == 0 ||
  415. strcmp(szCmd, "cmd-90") == 0 || strcmp(szCmd, "cmd-91") == 0 || strcmp(szCmd, "cmd-92") == 0 ||
  416. strcmp(szCmd, "cmd-93") == 0 || strcmp(szCmd, "cmd-94") == 0 || strcmp(szCmd, "cmd-95") == 0 )
  417. {
  418. #if IS_USE_READMSG_CS
  419. EnterCriticalSection( &m_csReadMsg );
  420. #endif
  421. memcpy(m_sz_35Msg, pBuffer + 4, sizeof(m_sz_35Msg));
  422. #if IS_USE_READMSG_CS
  423. LeaveCriticalSection(&m_csReadMsg);
  424. #endif
  425. }
  426. }
  427. int CPB9315::Get33VarMsg( char szCmd[MAX_CMD], char szMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH], int startBit, int endBit )
  428. {
  429. int nRet = 0;
  430. if( strcmp(szCmd, "cmd-1") == 0 || strcmp(szCmd, "cmd-2") == 0 || strcmp(szCmd, "cmd-3") == 0 ||
  431. strcmp(szCmd, "cmd-4") == 0 || strcmp(szCmd, "cmd-6") == 0 || strcmp(szCmd, "cmd-5") == 0 ||
  432. strcmp(szCmd, "cmd-7") == 0 || strcmp(szCmd, "cmd-8") == 0 || strcmp(szCmd, "cmd-9") == 0 ||
  433. strcmp(szCmd, "cmd-10") == 0 || strcmp(szCmd, "cmd-11") == 0 || strcmp(szCmd, "cmd-12") == 0 ||
  434. strcmp(szCmd, "cmd-13") == 0 || strcmp(szCmd, "cmd-14") == 0)
  435. {
  436. #if IS_USE_READMSG_CS
  437. EnterCriticalSection( &m_csReadMsg );
  438. #endif
  439. DataProcess(szType, m_sz_33Msg + nIndex, szMsg, nLen, startBit, endBit);
  440. #if IS_USE_READMSG_CS
  441. LeaveCriticalSection(&m_csReadMsg);
  442. #endif
  443. nRet = 0;
  444. }
  445. return nRet;
  446. }
  447. int CPB9315::Get34VarMsg( char szCmd[MAX_CMD], char szMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH], int startBit, int endBit )
  448. {
  449. int nRet = 0;
  450. if( strcmp(szCmd, "cmd-15") == 0 || strcmp(szCmd, "cmd-16") == 0 || strcmp(szCmd, "cmd-17") == 0 ||
  451. strcmp(szCmd, "cmd-18") == 0 || strcmp(szCmd, "cmd-19") == 0 || strcmp(szCmd, "cmd-20") == 0 ||
  452. strcmp(szCmd, "cmd-21") == 0 || strcmp(szCmd, "cmd-22") == 0 || strcmp(szCmd, "cmd-23") == 0 ||
  453. strcmp(szCmd, "cmd-24") == 0 || strcmp(szCmd, "cmd-25") == 0 || strcmp(szCmd, "cmd-26") == 0 ||
  454. strcmp(szCmd, "cmd-27") == 0 || strcmp(szCmd, "cmd-28") == 0 || strcmp(szCmd, "cmd-29") == 0 || strcmp(szCmd, "cmd-30") == 0 ||
  455. strcmp(szCmd, "cmd-31") == 0 || strcmp(szCmd, "cmd-32") == 0 || strcmp(szCmd, "cmd-33") == 0 ||
  456. strcmp(szCmd, "cmd-34") == 0 || strcmp(szCmd, "cmd-35") == 0 || strcmp(szCmd, "cmd-36") == 0 ||
  457. strcmp(szCmd, "cmd-37") == 0 || strcmp(szCmd, "cmd-38") == 0 || strcmp(szCmd, "cmd-39") == 0 ||
  458. strcmp(szCmd, "cmd-40") == 0 || strcmp(szCmd, "cmd-41") == 0 || strcmp(szCmd, "cmd-42") == 0 ||
  459. strcmp(szCmd, "cmd-43") == 0 || strcmp(szCmd, "cmd-44") == 0 || strcmp(szCmd, "cmd-45") == 0 ||
  460. strcmp(szCmd, "cmd-46") == 0 || strcmp(szCmd, "cmd-47") == 0 || strcmp(szCmd, "cmd-48") == 0 ||
  461. strcmp(szCmd, "cmd-49") == 0 || strcmp(szCmd, "cmd-50") == 0 || strcmp(szCmd, "cmd-51") == 0 ||
  462. strcmp(szCmd, "cmd-52") == 0 || strcmp(szCmd, "cmd-53") == 0 )
  463. {
  464. #if IS_USE_READMSG_CS
  465. EnterCriticalSection( &m_csReadMsg );
  466. #endif
  467. DataProcess(szType, m_sz_34Msg + nIndex, szMsg, nLen, startBit, endBit);
  468. #if IS_USE_READMSG_CS
  469. LeaveCriticalSection(&m_csReadMsg);
  470. #endif
  471. nRet = 0;
  472. }
  473. return nRet;
  474. }
  475. int CPB9315::Get35VarMsg( char szCmd[MAX_CMD], char szMsg[VAR_MSG], int &nIndex, int &nLen, char szType[TYPE_LENGTH], int startBit, int endBit )
  476. {
  477. int nRet = 0;
  478. if( strcmp(szCmd, "cmd-54") == 0 ||strcmp(szCmd, "cmd-55") == 0 || strcmp(szCmd, "cmd-56") == 0 || strcmp(szCmd, "cmd-57") == 0 ||
  479. strcmp(szCmd, "cmd-58") == 0 || strcmp(szCmd, "cmd-59") == 0 || strcmp(szCmd, "cmd-60") == 0 ||
  480. strcmp(szCmd, "cmd-61") == 0 || strcmp(szCmd, "cmd-62") == 0 || strcmp(szCmd, "cmd-63") == 0 ||
  481. strcmp(szCmd, "cmd-64") == 0 || strcmp(szCmd, "cmd-65") == 0 || strcmp(szCmd, "cmd-66") == 0 ||
  482. strcmp(szCmd, "cmd-67") == 0 || strcmp(szCmd, "cmd-68") == 0 || strcmp(szCmd, "cmd-69") == 0 ||
  483. strcmp(szCmd, "cmd-60") == 0 || strcmp(szCmd, "cmd-61") == 0 || strcmp(szCmd, "cmd-62") == 0 ||
  484. strcmp(szCmd, "cmd-63") == 0 || strcmp(szCmd, "cmd-64") == 0 || strcmp(szCmd, "cmd-65") == 0 ||
  485. strcmp(szCmd, "cmd-66") == 0 || strcmp(szCmd, "cmd-67") == 0 || strcmp(szCmd, "cmd-68") == 0 ||
  486. strcmp(szCmd, "cmd-69") == 0 || strcmp(szCmd, "cmd-70") == 0 || strcmp(szCmd, "cmd-71") == 0 ||
  487. strcmp(szCmd, "cmd-72") == 0 || strcmp(szCmd, "cmd-73") == 0 || strcmp(szCmd, "cmd-74") == 0 ||
  488. strcmp(szCmd, "cmd-75") == 0 || strcmp(szCmd, "cmd-76") == 0 || strcmp(szCmd, "cmd-77") == 0 ||
  489. strcmp(szCmd, "cmd-78") == 0 || strcmp(szCmd, "cmd-79") == 0 || strcmp(szCmd, "cmd-80") == 0 ||
  490. strcmp(szCmd, "cmd-81") == 0 || strcmp(szCmd, "cmd-82") == 0 || strcmp(szCmd, "cmd-83") == 0 ||
  491. strcmp(szCmd, "cmd-84") == 0 || strcmp(szCmd, "cmd-85") == 0 || strcmp(szCmd, "cmd-86") == 0 ||
  492. strcmp(szCmd, "cmd-87") == 0 || strcmp(szCmd, "cmd-88") == 0 || strcmp(szCmd, "cmd-89") == 0 ||
  493. strcmp(szCmd, "cmd-90") == 0 || strcmp(szCmd, "cmd-91") == 0 || strcmp(szCmd, "cmd-92") == 0 ||
  494. strcmp(szCmd, "cmd-93") == 0 || strcmp(szCmd, "cmd-94") == 0 || strcmp(szCmd, "cmd-95") == 0 )
  495. {
  496. #if IS_USE_READMSG_CS
  497. EnterCriticalSection( &m_csReadMsg );
  498. #endif
  499. DataProcess(szType, m_sz_35Msg + nIndex, szMsg, nLen, startBit, endBit);
  500. #if IS_USE_READMSG_CS
  501. LeaveCriticalSection(&m_csReadMsg);
  502. #endif
  503. nRet = 0;
  504. }
  505. return nRet;
  506. }
  507. int CPB9315::GetPB9315IniInfo(
  508. char szPath[MAX_PATH],
  509. char szIniName[MAX_PATH],
  510. char szCmd[MAX_CMD],
  511. BYTE &IniSendCMD,
  512. char szType[TYPE_LENGTH],
  513. int &nIndex,
  514. int &nLen,
  515. int &StaBit,
  516. int &EndBit
  517. )
  518. {
  519. char szFile[MAX_PATH + 1] = "";
  520. char szSendCmd[3] = {0};
  521. memset(szType, 0, TYPE_LENGTH);
  522. wsprintf(szFile, "%s\\config\\%s", szPath, szIniName);
  523. GetPrivateProfileString(szCmd, "SendCmd", "", szSendCmd, MAX_CMD, szFile);
  524. IniSendCMD = AsciiToBYTE(szSendCmd[0])*16 + AsciiToBYTE(szSendCmd[1]) ;
  525. GetPrivateProfileString(szCmd, "Type", "", szType, TYPE_LENGTH, szFile);
  526. nIndex = GetPrivateProfileInt(szCmd, "Index", 0, szFile);
  527. nLen = GetPrivateProfileInt(szCmd, "Len", 0, szFile);
  528. StaBit = GetPrivateProfileInt(szCmd,"Sbit",0,szFile);
  529. EndBit = GetPrivateProfileInt(szCmd,"Ebit",0,szFile);
  530. return 0;
  531. }
  532. int CPB9315::GetEndCheck(char *buf,int len)
  533. {
  534. int iSum = 0;
  535. for (int i = 0; i < len; i++)
  536. {
  537. iSum += (BYTE)buf[i];
  538. }
  539. // 再求低8位,取反加+;
  540. iSum = iSum & 0x00FF;
  541. return iSum = ~iSum+1;
  542. }
  543. void CPB9315::GetDataSection(/*char *pBuf*/)
  544. {
  545. char szTmpbuf1[125] = {0},szTmpbuf2[49] = {0};
  546. int i = 0, nIndex = 0;
  547. for( i = 1; ; i++)
  548. {
  549. if ( 171 == (BYTE)m_szTemp[i])
  550. {
  551. nIndex = i;
  552. break;
  553. }
  554. }
  555. memcpy(szTmpbuf1,m_szTemp,nIndex);
  556. memcpy(szTmpbuf2,m_szTemp + nIndex,174 - nIndex);
  557. //sprintf(m_sz_34Msg,"%s%s",szTmpbuf1 + 4,szTmpbuf2 + 4);
  558. memcpy(m_sz_34Msg, szTmpbuf1 + 4, 120);
  559. memcpy(m_sz_34Msg + 120,szTmpbuf2 +4 ,44);
  560. }
  561. void CPB9315::ByteTo16HEXAscii(char *szSour, char *pDsc,int len)
  562. {
  563. for (int i = 0; i < len; i++)
  564. {
  565. pDsc[i] = ByteToAscii((szSour[len -i-1] >> 4 ) & 0x0F);
  566. pDsc[i + 1] = ByteToAscii(szSour[len -i-1] & 0x0F);
  567. }
  568. }
  569. void CPB9315::ByteTo16HEXAscii(BYTE &bySour, char *pDsc)
  570. {
  571. if (bySour%16 == 0)
  572. {
  573. pDsc[1] = ByteToAscii((bySour >> 4 ) & 0x0F);
  574. pDsc[0] = ByteToAscii(bySour & 0x0F);
  575. }
  576. else
  577. {
  578. pDsc[0] = ByteToAscii((bySour >> 4 ) & 0x0F);
  579. pDsc[ 1] = ByteToAscii(bySour & 0x0F);
  580. }
  581. }
  582. //char* CPB9315::ByteTo16HEXAscii(BYTE &bySour)
  583. //{
  584. // //char *pDsc = new char[3];
  585. // //memset(pDsc,0,3);
  586. // char pDsc[3] = {0};
  587. //
  588. // pDsc[0] = ByteToAscii((bySour >> 4 ) & 0x0F);
  589. // pDsc[1] = ByteToAscii(bySour & 0x0F);
  590. //
  591. // return pDsc;
  592. //}
  593. void CPB9315::DataProcess(const char *szType, char *szMsg, char *szConvMsg, int len, int StaBit, int EndBit)
  594. {
  595. if ( strcmp(szType, "HEX") == 0)
  596. {
  597. char sztmp1[3] = {0},sztmp2[3] = {0},sztmp3[3] = {0},sztmp4[3] = {0};
  598. //char sztmp[9] = {0};
  599. memset(szProcessData,0,9);
  600. //ByteTo16HEXAscii(szMsg,sztmp,4);
  601. ByteTo16HEXAscii((BYTE&)szMsg[3],sztmp1);
  602. ByteTo16HEXAscii((BYTE&)szMsg[2],sztmp2);
  603. ByteTo16HEXAscii((BYTE&)szMsg[1],sztmp3);
  604. ByteTo16HEXAscii((BYTE&)szMsg[0],sztmp4);
  605. sprintf(szProcessData,"%s%s%s%s",sztmp1,sztmp2,sztmp3,sztmp4);
  606. LOG4C((LOG_NOTICE,"%s",szProcessData));
  607. int iSum = AsciiToBYTE(szProcessData[4])*4096 + AsciiToBYTE(szProcessData[5])*256 + AsciiToBYTE(szProcessData[6])*16 + AsciiToBYTE(szProcessData[7]) ;
  608. sprintf(szConvMsg,"%d",iSum);
  609. }
  610. else if ( strcmp(szType, "BIT") == 0 )
  611. {
  612. BitDataProcess((BYTE)szMsg[0],szConvMsg,StaBit,EndBit);
  613. }
  614. }
  615. void CPB9315::BitDataProcess(const BYTE &bySour, char *szRecv,int &StaBit,int &EndBit)
  616. {
  617. int ByteBit = 0;
  618. int sum = bySour;
  619. switch(StaBit)
  620. {
  621. case 7:
  622. ByteBit = sum & 0x01;
  623. break;
  624. case 6:
  625. ByteBit = (sum & 0x02) / 0x02 ;
  626. break;
  627. case 5:
  628. ByteBit = (sum & 0x04) / 0x04 ;
  629. break;
  630. case 4:
  631. ByteBit = (sum & 0x08) / 0x08 ;
  632. break;
  633. case 3:
  634. ByteBit = (sum & 0x10) / 0x10 ;
  635. break;
  636. case 2:
  637. ByteBit = (sum & 0x20) / 0x20 ;
  638. break;
  639. case 1:
  640. ByteBit = (sum & 0x40) / 0x40 ;
  641. break;
  642. case 0:
  643. ByteBit = (sum & 0x80) / 0x80;
  644. break;
  645. }
  646. sprintf(szRecv,"%d",ByteBit);
  647. }
  648. void CPB9315::SimulationCommData()
  649. {
  650. char sztemp[1024] = {0};
  651. sztemp[0] = 0xAB ;
  652. sztemp[1] = 0x04 ;
  653. sztemp[2] = 0x78 ;
  654. sztemp[3] = 0x01 ;
  655. // 输出线电压;
  656. sztemp[4] = 0x91 ;
  657. sztemp[5] = 0x01;
  658. sztemp[6] = 0x00;
  659. sztemp[7] = 0x00;
  660. sztemp[8] = 0x8F ;
  661. sztemp[9] = 0x01;
  662. sztemp[10] = 0x00;
  663. sztemp[11] = 0x00;
  664. sztemp[12] = 0x8D;
  665. sztemp[13] = 0x01;
  666. sztemp[14] = 0x00;
  667. sztemp[15] = 0x00;
  668. // 输入线电压;
  669. sztemp[16] = 0x70 ;
  670. sztemp[17] = 0x01;
  671. sztemp[18] = 0x00;
  672. sztemp[19] = 0x00;
  673. sztemp[20] = 0x70;
  674. sztemp[21] = 0x01;
  675. sztemp[22] = 0x00;
  676. sztemp[23] = 0x00;
  677. sztemp[24] = 0x6E;
  678. sztemp[25] = 0x01;
  679. sztemp[26] = 0x00;
  680. sztemp[27] = 0x00;
  681. // 旁路线电压;
  682. sztemp[28] = 0x76;
  683. sztemp[29] = 0x01;
  684. sztemp[30] = 0x00;
  685. sztemp[31] = 0x00;
  686. sztemp[32] = 0x77;
  687. sztemp[33] = 0x01;
  688. sztemp[34] = 0x00;
  689. sztemp[35] = 0x00;
  690. sztemp[36] = 0x77;
  691. sztemp[37] = 0x01;
  692. sztemp[38] = 0x00;
  693. sztemp[39] = 0x00;
  694. // 主输入电流;
  695. sztemp[40] = 0x14;
  696. sztemp[41] = 0x00;//0x00
  697. sztemp[42] = 0x00;
  698. sztemp[43] = 0x00;
  699. sztemp[44] = 0x13;
  700. sztemp[45] = 0x00;
  701. sztemp[46] = 0x00;
  702. sztemp[47] = 0x00;
  703. sztemp[48] = 0x13;
  704. sztemp[49] = 0x00;
  705. sztemp[50] = 0x00;
  706. sztemp[51] = 0x00;
  707. // 输出功率;
  708. sztemp[52] = 0xFC ;
  709. sztemp[53] = 0x21;
  710. sztemp[54] = 0x00;
  711. sztemp[55] = 0x00;
  712. // 输入功率;
  713. sztemp[56] = 0x5C;
  714. sztemp[57] = 0x2B;
  715. sztemp[58] = 0x00;
  716. sztemp[59] = 0x00;
  717. // 输出电量
  718. sztemp[60] = 0x54 ;
  719. sztemp[61] = 0x24;
  720. sztemp[62] = 0x00;
  721. sztemp[63] = 0x00;
  722. // 输入电量;
  723. sztemp[64] = 0x38;
  724. sztemp[65] = 0x31;
  725. sztemp[66] = 0x00;
  726. sztemp[67] = 0x00;
  727. // 输出/输入功率因子;
  728. sztemp[68] = 0x00;
  729. sztemp[69] = 0x14;
  730. sztemp[70] = 0x6E;
  731. sztemp[71] = 0x3F;
  732. sztemp[72] = 0x00;
  733. sztemp[73] = 0x47;
  734. sztemp[74] = 0x61;
  735. sztemp[75] = 0x3F;
  736. // 输出\输入\逆变器\旁路 频率;
  737. sztemp[76] = 0x32;
  738. sztemp[77] = 0x00;
  739. sztemp[78] = 0x00;
  740. sztemp[79] = 0x00;
  741. sztemp[80] = 0x32;
  742. sztemp[81] = 0x00;
  743. sztemp[82] = 0x00;
  744. sztemp[83] = 0x00;
  745. sztemp[84] = 0x32;
  746. sztemp[85] = 0x00;
  747. sztemp[86] = 0x00;
  748. sztemp[87] = 0x00;
  749. sztemp[88] = 0x32;
  750. sztemp[89] = 0x00;
  751. sztemp[90] = 0x00;
  752. sztemp[91] = 0x00;
  753. // 电池电流;
  754. sztemp[92] = 0x00;
  755. sztemp[93] = 0x00;
  756. sztemp[94] = 0x00;
  757. sztemp[95] = 0xC0;
  758. // 电池电压;
  759. sztemp[96] = 0xD8;
  760. sztemp[97] = 0x01;
  761. sztemp[98] = 0x00;
  762. sztemp[99] = 0x00;
  763. // 电池充电程度;
  764. sztemp[100] = 0x63;
  765. sztemp[101] = 0x00;
  766. sztemp[102] = 0x00;
  767. sztemp[103] = 0x00;
  768. // 电池剩余时间;
  769. sztemp[104] = 0x20;
  770. sztemp[105] = 0x09;
  771. sztemp[106] = 0x00;
  772. sztemp[107] = 0x00;
  773. // 逆变器相电压;
  774. sztemp[108] = 0xE7;
  775. sztemp[109] = 0x00;
  776. sztemp[110] = 0x00;
  777. sztemp[111] = 0x00;
  778. sztemp[112] = 0xE6;
  779. sztemp[113] = 0x00;
  780. sztemp[114] = 0x00;
  781. sztemp[115] = 0x00;
  782. sztemp[116] = 0xE8;
  783. sztemp[117] = 0x00;
  784. sztemp[118] = 0x00;
  785. sztemp[119] = 0x00;
  786. // 相负载电流;
  787. sztemp[120] = 0x08;
  788. sztemp[121] = 0x00;
  789. sztemp[122] = 0x00;
  790. sztemp[123] = 0x00;
  791. sztemp[124] = 0x5F;
  792. sztemp[125] = 0xAB;
  793. sztemp[126] = 0x04;
  794. sztemp[127] = 0x2C;
  795. sztemp[128] = 0x82;
  796. sztemp[129] = 0x0F;
  797. sztemp[130] = 0x00;
  798. sztemp[131] = 0x00;
  799. sztemp[132] = 0x00;
  800. sztemp[133] = 0x11;
  801. sztemp[134] = 0x00;
  802. sztemp[135] = 0x00;
  803. sztemp[136] = 0x00;
  804. // 相电流输出百分比;
  805. sztemp[137] = 0x2D;
  806. sztemp[138] = 0x00;
  807. sztemp[139] = 0x00;
  808. sztemp[140] = 0x00;
  809. sztemp[141] = 0x2D;
  810. sztemp[142] = 0x00;
  811. sztemp[143] = 0x00;
  812. sztemp[144] = 0x00;
  813. sztemp[145] = 0x2D;
  814. sztemp[146] = 0x00;
  815. sztemp[147] = 0x00;
  816. sztemp[148] = 0x00;
  817. // 电压比率;
  818. sztemp[149] = 0x30;
  819. sztemp[150] = 0x75;
  820. sztemp[151] = 0x00;
  821. sztemp[152] = 0x00;
  822. sztemp[153] = 0x22;
  823. sztemp[154] = 0x11;
  824. sztemp[155] = 0x11;
  825. sztemp[156] = 0xA0;
  826. sztemp[157] = 0x00;
  827. sztemp[158] = 0x22;
  828. sztemp[159] = 0x47;
  829. sztemp[160] = 0x13;
  830. // 相输出电压;
  831. sztemp[161] = 0xE7;
  832. sztemp[162] = 0x00;
  833. sztemp[163] = 0x00;
  834. sztemp[164] = 0x00;
  835. sztemp[165] = 0xE6;
  836. sztemp[166] = 0x00;
  837. sztemp[167] = 0x00;
  838. sztemp[168] = 0x00;
  839. sztemp[169] = 0xE5;
  840. sztemp[170] = 0x00;
  841. sztemp[171] = 0x00;
  842. sztemp[172] = 0x00;
  843. sztemp[173] = 0x45;
  844. memcpy(m_szTemp,sztemp,174);
  845. GetDataSection();
  846. }