Chroma22293.cpp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906
  1. // Chroma22293.cpp : 定义 DLL 的导出函数。
  2. //
  3. #include "stdafx.h"
  4. #include "framework.h"
  5. #ifndef _PYD_
  6. #include "Chroma22293.h"
  7. #else
  8. #include "Python.h"
  9. #endif
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #endif
  13. #define READ_LEN 8912
  14. // 唯一的应用程序对象
  15. //////////////////////////////////////////////////////////////////////////
  16. // 全局变量;
  17. std::string g_strData;
  18. CSynSerial g_SynSerial;
  19. #ifndef _PYD_
  20. CWinApp theApp;
  21. using namespace std;
  22. int main()
  23. {
  24. int nRetCode = 0;
  25. HMODULE hModule = ::GetModuleHandle(nullptr);
  26. if (hModule != nullptr)
  27. {
  28. // 初始化 MFC 并在失败时显示错误
  29. if (!AfxWinInit(hModule, nullptr, ::GetCommandLine(), 0))
  30. {
  31. // TODO: 在此处为应用程序的行为编写代码。
  32. wprintf(L"错误: MFC 初始化失败\n");
  33. nRetCode = 1;
  34. }
  35. else
  36. {
  37. // TODO: 在此处为应用程序的行为编写代码。
  38. if ( OpenDevice(3,115200,8,0,1))
  39. {
  40. if (GetBufStatus())
  41. printf("成功BUF\n");
  42. GetDeviceSoft();
  43. GetDeviceName();
  44. if (SetPattern(11))
  45. printf("SetPattern成功\n");
  46. if (SetTiming(11))
  47. printf("SetTiming成功\n");
  48. if (SetTimingPattern(11, 11))
  49. printf("SetTimingPattern成功\n");
  50. if (SetBlueOFF())
  51. printf("SetBlueOFF成功\n");
  52. if (SetBlueON())
  53. printf("SetBuleON成功\n");
  54. if (SetGreenOFF())
  55. printf("SetGreenOFF成功\n");
  56. if (SetGreenON())
  57. printf("SetGreenON成功\n");
  58. if (SetRedOFF())
  59. printf("SetRedOFF成功\n");
  60. if (SetRedON())
  61. printf("SetRedON成功\n");
  62. if (SetKeyBoardLock())
  63. printf("SetKeyBoardLock成功\n");
  64. if (SetKeyBoardUnLock())
  65. printf("SetKeyBoardUnLock成功\n");
  66. }
  67. CloseDevice();
  68. }
  69. }
  70. else
  71. {
  72. // TODO: 更改错误代码以符合需要
  73. wprintf(L"错误: GetModuleHandle 失败\n");
  74. nRetCode = 1;
  75. }
  76. system("pause");
  77. return nRetCode;
  78. }
  79. //////////////////////////////////////////////////////////////////////////
  80. // C接口;
  81. DoException g_funExp = NULL;
  82. CHROMA22293_API BOOL OpenDevice(BYTE byCommPort, DWORD dwBaudRate, BYTE bySize, BYTE byParity, BYTE byStopBits)
  83. {
  84. if (g_SynSerial.IsOpen())
  85. {
  86. g_SynSerial.CloseSerialPort();
  87. }
  88. return g_SynSerial.OpenSerialPort(byCommPort, dwBaudRate, bySize, byParity, byStopBits, 0, 0);
  89. }
  90. CHROMA22293_API void CloseDevice()
  91. {
  92. g_SynSerial.CloseSerialPort();
  93. }
  94. CHROMA22293_API BOOL GetBufStatus()
  95. {
  96. std::string data = "dummy;\r";
  97. if (!g_SynSerial.IsOpen())
  98. return FALSE;
  99. // 写串口数据;
  100. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  101. if (dwData != data.size() )
  102. {
  103. return FALSE;
  104. }
  105. // 读取串口数据;
  106. byte byData[READ_LEN] = {0};
  107. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  108. if ( dwData == 0)
  109. {
  110. return FALSE;
  111. }
  112. printf("dumy=>%s\n",byData);
  113. return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);
  114. }
  115. CHROMA22293_API LPCTSTR GetDeviceSoft()
  116. {
  117. std::string data = "report ver;\r";
  118. if (!g_SynSerial.IsOpen())
  119. return _T("");
  120. // 写串口数据;
  121. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  122. if (dwData != data.size())
  123. {
  124. return _T("");
  125. }
  126. // 读取串口数据;
  127. byte byData[READ_LEN] = { 0 };
  128. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  129. if (dwData == 0)
  130. {
  131. return _T("");
  132. }
  133. g_strData = (char*)byData;
  134. printf("report ver=>%s\n", byData);
  135. return g_strData.c_str();
  136. }
  137. CHROMA22293_API LPCTSTR GetDeviceName()
  138. {
  139. std::string data = "report model;\r";
  140. if (!g_SynSerial.IsOpen())
  141. return _T("");
  142. // 写串口数据;
  143. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  144. if (dwData != data.size())
  145. {
  146. return _T("");
  147. }
  148. // 读取串口数据;
  149. byte byData[READ_LEN] = { 0 };
  150. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  151. if (dwData == 0)
  152. {
  153. return _T("");
  154. }
  155. g_strData = (char*)byData;
  156. printf("report ver=>%s\n", byData);
  157. return g_strData.c_str();
  158. }
  159. CHROMA22293_API BOOL SetPattern(int param)
  160. {
  161. char data[128] = {0};
  162. _stprintf_s(data, _T("run ptn %ld;\r"), param);
  163. if (!g_SynSerial.IsOpen())
  164. return FALSE;
  165. // 写串口数据;
  166. DWORD dwData = g_SynSerial.WriteComm((byte*)data, sizeof(data));
  167. if (dwData != sizeof(data))
  168. {
  169. return FALSE;
  170. }
  171. // 读取串口数据;
  172. byte byData[READ_LEN] = { 0 };
  173. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  174. if (dwData == 0)
  175. {
  176. return FALSE;
  177. }
  178. printf("run ptn %d;=>%s\n", param, byData);
  179. return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);
  180. }
  181. CHROMA22293_API BOOL SetTiming(int param)
  182. {
  183. char data[128] = { 0 };
  184. _stprintf_s(data, _T("run tim %ld;\r"), param);
  185. if (!g_SynSerial.IsOpen())
  186. return FALSE;
  187. // 写串口数据;
  188. DWORD dwData = g_SynSerial.WriteComm((byte*)data, sizeof(data));
  189. if (dwData != sizeof(data))
  190. {
  191. return FALSE;
  192. }
  193. // 读取串口数据;
  194. byte byData[READ_LEN] = { 0 };
  195. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  196. if (dwData == 0)
  197. {
  198. return FALSE;
  199. }
  200. printf("run ptn %d;=>%s\n", param, byData);
  201. return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);
  202. }
  203. CHROMA22293_API BOOL SetTimingPattern(int param1, int param2)
  204. {
  205. char data[128] = { 0 };
  206. _stprintf_s(data, _T("run tim %ld;run tim %ld;\r"), param1, param2);
  207. if (!g_SynSerial.IsOpen())
  208. return FALSE;
  209. // 写串口数据;
  210. DWORD dwData = g_SynSerial.WriteComm((byte*)data, strlen(data));
  211. if (dwData != strlen(data))
  212. {
  213. return FALSE;
  214. }
  215. // 读取串口数据;
  216. byte byData[READ_LEN] = { 0 };
  217. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  218. if (dwData == 0)
  219. {
  220. return FALSE;
  221. }
  222. printf("run ptn %d;run tim %d=>%s\n", param1, param2, byData);
  223. return !_mbsicmp((const byte*)"ok;\r\nok;\r\n", (const byte*)byData);
  224. }
  225. CHROMA22293_API BOOL SetBlueOFF()
  226. {
  227. std::string data = "b off;\r";
  228. if (!g_SynSerial.IsOpen())
  229. return FALSE;
  230. // 写串口数据;
  231. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  232. if (dwData != data.size())
  233. {
  234. return FALSE;
  235. }
  236. // 读取串口数据;
  237. byte byData[READ_LEN] = { 0 };
  238. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  239. if (dwData == 0)
  240. {
  241. return FALSE;
  242. }
  243. printf("b off=>%s\n", byData);
  244. return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);
  245. }
  246. CHROMA22293_API BOOL SetBlueON()
  247. {
  248. std::string data = "b on;\r";
  249. if (!g_SynSerial.IsOpen())
  250. return FALSE;
  251. // 写串口数据;
  252. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  253. if (dwData != data.size())
  254. {
  255. return FALSE;
  256. }
  257. // 读取串口数据;
  258. byte byData[READ_LEN] = { 0 };
  259. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  260. if (dwData == 0)
  261. {
  262. return FALSE;
  263. }
  264. printf("b on=>%s\n", byData);
  265. return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);
  266. }
  267. CHROMA22293_API BOOL SetGreenOFF()
  268. {
  269. std::string data = "g off;\r";
  270. if (!g_SynSerial.IsOpen())
  271. return FALSE;
  272. // 写串口数据;
  273. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  274. if (dwData != data.size())
  275. {
  276. return FALSE;
  277. }
  278. // 读取串口数据;
  279. byte byData[READ_LEN] = { 0 };
  280. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  281. if (dwData == 0)
  282. {
  283. return FALSE;
  284. }
  285. printf("g off=>%s\n", byData);
  286. return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);
  287. }
  288. CHROMA22293_API BOOL SetGreenON()
  289. {
  290. std::string data = "g on;\r";
  291. if (!g_SynSerial.IsOpen())
  292. return FALSE;
  293. // 写串口数据;
  294. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  295. if (dwData != data.size())
  296. {
  297. return FALSE;
  298. }
  299. // 读取串口数据;
  300. byte byData[READ_LEN] = { 0 };
  301. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  302. if (dwData == 0)
  303. {
  304. return FALSE;
  305. }
  306. printf("g on=>%s\n", byData);
  307. return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);
  308. }
  309. CHROMA22293_API BOOL SetRedOFF()
  310. {
  311. std::string data = "r off;\r";
  312. if (!g_SynSerial.IsOpen())
  313. return FALSE;
  314. // 写串口数据;
  315. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  316. if (dwData != data.size())
  317. {
  318. return FALSE;
  319. }
  320. // 读取串口数据;
  321. byte byData[READ_LEN] = { 0 };
  322. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  323. if (dwData == 0)
  324. {
  325. return FALSE;
  326. }
  327. printf("r off=>%s\n", byData);
  328. return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);
  329. }
  330. CHROMA22293_API BOOL SetRedON()
  331. {
  332. std::string data = "r on;\r";
  333. if (!g_SynSerial.IsOpen())
  334. return FALSE;
  335. // 写串口数据;
  336. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  337. if (dwData != data.size())
  338. {
  339. return FALSE;
  340. }
  341. // 读取串口数据;
  342. byte byData[READ_LEN] = { 0 };
  343. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  344. if (dwData == 0)
  345. {
  346. return FALSE;
  347. }
  348. printf("r on=>%s\n", byData);
  349. return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);
  350. }
  351. CHROMA22293_API BOOL SetKeyBoardLock()
  352. {
  353. std::string data = "kb lock on;\r";
  354. if (!g_SynSerial.IsOpen())
  355. return FALSE;
  356. // 写串口数据;
  357. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  358. if (dwData != data.size())
  359. {
  360. return FALSE;
  361. }
  362. // 读取串口数据;
  363. byte byData[READ_LEN] = { 0 };
  364. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  365. if (dwData == 0)
  366. {
  367. return FALSE;
  368. }
  369. printf("kb lock on=>%s\n", byData);
  370. return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);
  371. }
  372. CHROMA22293_API BOOL SetKeyBoardUnLock()
  373. {
  374. std::string data = "kb lock off;\r";
  375. if (!g_SynSerial.IsOpen())
  376. return FALSE;
  377. // 写串口数据;
  378. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  379. if (dwData != data.size())
  380. {
  381. return FALSE;
  382. }
  383. // 读取串口数据;
  384. byte byData[READ_LEN] = { 0 };
  385. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  386. if (dwData == 0)
  387. {
  388. return FALSE;
  389. }
  390. printf("kb lock off=>%s\n", byData);
  391. return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);
  392. }
  393. CHROMA22293_API void SetExceptionCallBack(DoException funExp)
  394. {
  395. g_funExp = funExp;
  396. }
  397. #else
  398. static PyObject* OpenDevice(PyObject* self, PyObject* args)
  399. {
  400. // 应用程序路径;
  401. unsigned int port, baudrate, datasize, parity, stopbite;
  402. if (!PyArg_ParseTuple(args, "IIIII", &port, &baudrate, &datasize, &parity, &stopbite))
  403. return NULL;
  404. if (g_SynSerial.IsOpen())
  405. {
  406. g_SynSerial.CloseSerialPort();
  407. }
  408. // 返回进程Id;
  409. return Py_BuildValue("b", g_SynSerial.OpenSerialPort(port, baudrate, datasize, parity, stopbite, 0, 0));
  410. }
  411. static PyObject* CloseDevice(PyObject* self, PyObject* args)
  412. {
  413. g_SynSerial.CloseSerialPort();
  414. return Py_BuildValue(""); // 返回None;
  415. }
  416. static PyObject* GetBufStatus(PyObject* self, PyObject* args)
  417. {
  418. std::string data = "dummy;\r";
  419. if (!g_SynSerial.IsOpen())
  420. return Py_BuildValue("b", 0);
  421. // 写串口数据;
  422. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  423. if (dwData != data.size())
  424. {
  425. return Py_BuildValue("b", 0);
  426. }
  427. // 读取串口数据;
  428. byte byData[READ_LEN] = { 0 };
  429. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  430. if (dwData == 0)
  431. {
  432. return Py_BuildValue("b", 0);
  433. }
  434. return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));
  435. }
  436. static PyObject* GetDeviceSoft(PyObject* self, PyObject* args)
  437. {
  438. std::string data = "report ver;\r";
  439. if (!g_SynSerial.IsOpen())
  440. return Py_BuildValue("s", _T(""));
  441. // 写串口数据;
  442. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  443. if (dwData != data.size())
  444. {
  445. return Py_BuildValue("s", _T(""));
  446. }
  447. // 读取串口数据;
  448. byte byData[READ_LEN] = { 0 };
  449. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  450. if (dwData == 0)
  451. {
  452. return Py_BuildValue("s", _T(""));
  453. }
  454. g_strData = (char*)byData;
  455. return Py_BuildValue("s", g_strData.c_str());
  456. }
  457. static PyObject* GetDeviceName(PyObject* self, PyObject* args)
  458. {
  459. std::string data = "report model;\r";
  460. if (!g_SynSerial.IsOpen())
  461. return Py_BuildValue("s", _T(""));
  462. // 写串口数据;
  463. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  464. if (dwData != data.size())
  465. {
  466. return Py_BuildValue("s", _T(""));
  467. }
  468. // 读取串口数据;
  469. byte byData[READ_LEN] = { 0 };
  470. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  471. if (dwData == 0)
  472. {
  473. return Py_BuildValue("s", _T(""));
  474. }
  475. g_strData = (char*)byData;
  476. return Py_BuildValue("s", g_strData.c_str());
  477. }
  478. static PyObject* SetPattern(PyObject* self, PyObject* args)
  479. {
  480. unsigned int param;
  481. if (!PyArg_ParseTuple(args, "I", &param))
  482. return NULL;
  483. char data[128] = { 0 };
  484. _stprintf_s(data, _T("run ptn %ld;\r"), param);
  485. if (!g_SynSerial.IsOpen())
  486. return Py_BuildValue("b", 0);
  487. // 写串口数据;
  488. DWORD dwData = g_SynSerial.WriteComm((byte*)data, sizeof(data));
  489. if (dwData != sizeof(data))
  490. {
  491. return Py_BuildValue("b", 0);
  492. }
  493. // 读取串口数据;
  494. byte byData[READ_LEN] = { 0 };
  495. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  496. if (dwData == 0)
  497. {
  498. return Py_BuildValue("b", 0);
  499. }
  500. return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));
  501. }
  502. static PyObject* SetTiming(PyObject* self, PyObject* args)
  503. {
  504. unsigned int param;
  505. if (!PyArg_ParseTuple(args, "I", &param))
  506. return NULL;
  507. char data[128] = { 0 };
  508. _stprintf_s(data, _T("run tim %ld;\r"), param);
  509. if (!g_SynSerial.IsOpen())
  510. return Py_BuildValue("b", 0);
  511. // 写串口数据;
  512. DWORD dwData = g_SynSerial.WriteComm((byte*)data, sizeof(data));
  513. if (dwData != sizeof(data))
  514. {
  515. return Py_BuildValue("b", 0);
  516. }
  517. // 读取串口数据;
  518. byte byData[READ_LEN] = { 0 };
  519. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  520. if (dwData == 0)
  521. {
  522. return Py_BuildValue("b", 0);
  523. }
  524. return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));
  525. }
  526. static PyObject* SetTimingPattern(PyObject* self, PyObject* args)
  527. {
  528. unsigned int param1, param2;
  529. if (!PyArg_ParseTuple(args, "II", &param1, &param2))
  530. return NULL;
  531. char data[128] = { 0 };
  532. _stprintf_s(data, _T("run tim %ld;run tim %ld;\r"), param1, param2);
  533. if (!g_SynSerial.IsOpen())
  534. return Py_BuildValue("b", 0);
  535. // 写串口数据;
  536. DWORD dwData = g_SynSerial.WriteComm((byte*)data, strlen(data));
  537. if (dwData != strlen(data))
  538. {
  539. return Py_BuildValue("b", 0);
  540. }
  541. // 读取串口数据;
  542. byte byData[READ_LEN] = { 0 };
  543. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  544. if (dwData == 0)
  545. {
  546. return Py_BuildValue("b", 0);
  547. }
  548. return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\nok;\r\n", (const byte*)byData));
  549. }
  550. static PyObject* SetBlueOFF(PyObject* self, PyObject* args)
  551. {
  552. std::string data = "b off;\r";
  553. if (!g_SynSerial.IsOpen())
  554. return Py_BuildValue("b", 0);
  555. // 写串口数据;
  556. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  557. if (dwData != data.size())
  558. {
  559. return Py_BuildValue("b", 0);
  560. }
  561. // 读取串口数据;
  562. byte byData[READ_LEN] = { 0 };
  563. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  564. if (dwData == 0)
  565. {
  566. return Py_BuildValue("b", 0);
  567. }
  568. return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));
  569. }
  570. static PyObject* SetBlueON(PyObject* self, PyObject* args)
  571. {
  572. std::string data = "b on;\r";
  573. if (!g_SynSerial.IsOpen())
  574. return Py_BuildValue("b", 0);
  575. // 写串口数据;
  576. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  577. if (dwData != data.size())
  578. {
  579. return Py_BuildValue("b", 0);
  580. }
  581. // 读取串口数据;
  582. byte byData[READ_LEN] = { 0 };
  583. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  584. if (dwData == 0)
  585. {
  586. return Py_BuildValue("b", 0);
  587. }
  588. return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));
  589. }
  590. static PyObject* SetGreenOFF(PyObject* self, PyObject* args)
  591. {
  592. std::string data = "g off;\r";
  593. if (!g_SynSerial.IsOpen())
  594. return Py_BuildValue("b", 0);
  595. // 写串口数据;
  596. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  597. if (dwData != data.size())
  598. {
  599. return Py_BuildValue("b", 0);
  600. }
  601. // 读取串口数据;
  602. byte byData[READ_LEN] = { 0 };
  603. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  604. if (dwData == 0)
  605. {
  606. return Py_BuildValue("b", 0);
  607. }
  608. return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));
  609. }
  610. static PyObject* SetGreenON(PyObject* self, PyObject* args)
  611. {
  612. std::string data = "g on;\r";
  613. if (!g_SynSerial.IsOpen())
  614. return Py_BuildValue("b", 0);
  615. // 写串口数据;
  616. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  617. if (dwData != data.size())
  618. {
  619. return Py_BuildValue("b", 0);
  620. }
  621. // 读取串口数据;
  622. byte byData[READ_LEN] = { 0 };
  623. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  624. if (dwData == 0)
  625. {
  626. return Py_BuildValue("b", 0);
  627. }
  628. return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));
  629. }
  630. static PyObject* SetRedOFF(PyObject* self, PyObject* args)
  631. {
  632. std::string data = "r off;\r";
  633. if (!g_SynSerial.IsOpen())
  634. return Py_BuildValue("b", 0);
  635. // 写串口数据;
  636. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  637. if (dwData != data.size())
  638. {
  639. return Py_BuildValue("b", 0);
  640. }
  641. // 读取串口数据;
  642. byte byData[READ_LEN] = { 0 };
  643. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  644. if (dwData == 0)
  645. {
  646. return Py_BuildValue("b", 0);
  647. }
  648. return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));
  649. }
  650. static PyObject* SetRedON(PyObject* self, PyObject* args)
  651. {
  652. std::string data = "r on;\r";
  653. if (!g_SynSerial.IsOpen())
  654. return Py_BuildValue("b", 0);
  655. // 写串口数据;
  656. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  657. if (dwData != data.size())
  658. {
  659. return Py_BuildValue("b", 0);
  660. }
  661. // 读取串口数据;
  662. byte byData[READ_LEN] = { 0 };
  663. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  664. if (dwData == 0)
  665. {
  666. return Py_BuildValue("b", 0);
  667. }
  668. return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));
  669. }
  670. static PyObject* SetKeyBoardLock(PyObject* self, PyObject* args)
  671. {
  672. std::string data = "kb lock on;\r";
  673. if (!g_SynSerial.IsOpen())
  674. return Py_BuildValue("b", 0);
  675. // 写串口数据;
  676. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  677. if (dwData != data.size())
  678. {
  679. return Py_BuildValue("b", 0);
  680. }
  681. // 读取串口数据;
  682. byte byData[READ_LEN] = { 0 };
  683. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  684. if (dwData == 0)
  685. {
  686. return Py_BuildValue("b", 0);
  687. }
  688. return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));
  689. }
  690. static PyObject* SetKeyBoardUnLock(PyObject* self, PyObject* args)
  691. {
  692. std::string data = "kb lock off;\r";
  693. if (!g_SynSerial.IsOpen())
  694. return Py_BuildValue("b", 0);
  695. // 写串口数据;
  696. DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());
  697. if (dwData != data.size())
  698. {
  699. return Py_BuildValue("b", 0);
  700. }
  701. // 读取串口数据;
  702. byte byData[READ_LEN] = { 0 };
  703. dwData = g_SynSerial.ReadComm(byData, READ_LEN);
  704. if (dwData == 0)
  705. {
  706. return Py_BuildValue("b", 0);
  707. }
  708. return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));
  709. }
  710. // 描述方法,暴露给python的函数;
  711. static PyMethodDef Chroma22293_Methods[] = {
  712. {"OpenDevice",OpenDevice,METH_VARARGS,"打开设备"},
  713. {"CloseDevice", CloseDevice, METH_VARARGS, "关闭设备"},
  714. {"GetBufStatus", GetBufStatus, METH_VARARGS, "BUF测试"},
  715. {"GetDeviceSoft", GetDeviceSoft, METH_VARARGS, "设备版本"},
  716. {"GetDeviceName", GetDeviceName, METH_VARARGS, "设备信息"},
  717. {"SetPattern", SetPattern, METH_VARARGS, "设置Ptn"},
  718. {"SetTiming", SetTiming, METH_VARARGS, "设置Tim"},
  719. {"SetTimingPattern", SetTimingPattern, METH_VARARGS, "设置Ptn和Tim"},
  720. {"SetBlueOFF", SetBlueOFF, METH_VARARGS, "关蓝"},
  721. {"SetBlueON", SetBlueON, METH_VARARGS, "开蓝"},
  722. {"SetGreenOFF", SetGreenOFF, METH_VARARGS, "关绿"},
  723. {"SetGreenON", SetGreenON, METH_VARARGS, "开绿"},
  724. {"SetRedOFF", SetRedOFF, METH_VARARGS, "关红"},
  725. {"SetRedON", SetRedON, METH_VARARGS, "开红"},
  726. {"SetKeyBoardLock", SetKeyBoardLock, METH_VARARGS, "锁键盘"},
  727. {"SetKeyBoardUnLock", SetKeyBoardUnLock, METH_VARARGS, "解锁键盘"},
  728. //{"SetCallBack", SetCallBack, METH_VARARGS, "设置回调"},// Pyd暂时未了解如何实现回调;
  729. {NULL,NULL}
  730. };
  731. // 初始模块;//格式:init<模块名称>
  732. PyMODINIT_FUNC initChroma22293()
  733. {
  734. // 初始化pyd函数列表;
  735. PyObject* m, * d;
  736. m = Py_InitModule("Chroma22293", Chroma22293_Methods);
  737. d = PyModule_GetDict(m);
  738. }
  739. #endif