| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906 | // Chroma22293.cpp : 定义 DLL 的导出函数。//#include "stdafx.h"#include "framework.h"#ifndef _PYD_#include "Chroma22293.h"#else#include "Python.h"#endif#ifdef _DEBUG#define new DEBUG_NEW#endif#define READ_LEN 8912// 唯一的应用程序对象//////////////////////////////////////////////////////////////////////////// 全局变量;std::string g_strData;CSynSerial g_SynSerial;#ifndef _PYD_CWinApp theApp;using namespace std;int main(){    int nRetCode = 0;    HMODULE hModule = ::GetModuleHandle(nullptr);    if (hModule != nullptr)    {        // 初始化 MFC 并在失败时显示错误        if (!AfxWinInit(hModule, nullptr, ::GetCommandLine(), 0))        {            // TODO: 在此处为应用程序的行为编写代码。            wprintf(L"错误: MFC 初始化失败\n");            nRetCode = 1;        }        else        {            // TODO: 在此处为应用程序的行为编写代码。			if ( OpenDevice(3,115200,8,0,1))			{				if (GetBufStatus())					printf("成功BUF\n");				GetDeviceSoft();				GetDeviceName();				if (SetPattern(11))					printf("SetPattern成功\n");				if (SetTiming(11))					printf("SetTiming成功\n");				if (SetTimingPattern(11, 11))					printf("SetTimingPattern成功\n");				if (SetBlueOFF())					printf("SetBlueOFF成功\n");				if (SetBlueON())					printf("SetBuleON成功\n");				if (SetGreenOFF())					printf("SetGreenOFF成功\n");				if (SetGreenON())					printf("SetGreenON成功\n");				if (SetRedOFF())					printf("SetRedOFF成功\n");				if (SetRedON())					printf("SetRedON成功\n");				if (SetKeyBoardLock())					printf("SetKeyBoardLock成功\n");				if (SetKeyBoardUnLock())					printf("SetKeyBoardUnLock成功\n");			}			CloseDevice();        }    }    else    {        // TODO: 更改错误代码以符合需要        wprintf(L"错误: GetModuleHandle 失败\n");        nRetCode = 1;    }	system("pause");    return nRetCode;}//////////////////////////////////////////////////////////////////////////// C接口;DoException g_funExp = NULL;CHROMA22293_API BOOL OpenDevice(BYTE byCommPort, DWORD dwBaudRate, BYTE bySize, BYTE byParity, BYTE byStopBits){	if (g_SynSerial.IsOpen())	{		g_SynSerial.CloseSerialPort();	}	return g_SynSerial.OpenSerialPort(byCommPort, dwBaudRate, bySize, byParity, byStopBits, 0, 0);}CHROMA22293_API void CloseDevice(){	g_SynSerial.CloseSerialPort();}CHROMA22293_API BOOL GetBufStatus(){	std::string data = "dummy;\r";	if (!g_SynSerial.IsOpen())		return FALSE;	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size() )	{		return FALSE;	}	// 读取串口数据;	byte byData[READ_LEN] = {0};	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if ( dwData == 0)	{		return FALSE;	}	printf("dumy=>%s\n",byData);	return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);}CHROMA22293_API LPCTSTR GetDeviceSoft(){	std::string data = "report ver;\r";	if (!g_SynSerial.IsOpen())		return _T("");	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return _T("");	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return _T("");	}	g_strData = (char*)byData;	printf("report ver=>%s\n", byData);	return g_strData.c_str();}CHROMA22293_API LPCTSTR GetDeviceName(){	std::string data = "report model;\r";	if (!g_SynSerial.IsOpen())		return _T("");	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return _T("");	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return _T("");	}	g_strData = (char*)byData;	printf("report ver=>%s\n", byData);	return g_strData.c_str();}CHROMA22293_API BOOL SetPattern(int param){	char data[128] = {0};	_stprintf_s(data, _T("run ptn %ld;\r"), param);	if (!g_SynSerial.IsOpen())		return FALSE;	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data, sizeof(data));	if (dwData != sizeof(data))	{		return FALSE;	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return FALSE;	}	printf("run ptn %d;=>%s\n", param, byData);	return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);}CHROMA22293_API BOOL SetTiming(int param){	char data[128] = { 0 };	_stprintf_s(data, _T("run tim %ld;\r"), param);	if (!g_SynSerial.IsOpen())		return FALSE;	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data, sizeof(data));	if (dwData != sizeof(data))	{		return FALSE;	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return FALSE;	}	printf("run ptn %d;=>%s\n", param, byData);	return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);}CHROMA22293_API BOOL SetTimingPattern(int param1, int param2){	char data[128] = { 0 };	_stprintf_s(data, _T("run tim %ld;run tim %ld;\r"), param1, param2);	if (!g_SynSerial.IsOpen())		return FALSE;	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data, strlen(data));	if (dwData != strlen(data))	{		return FALSE;	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return FALSE;	}	printf("run ptn %d;run tim %d=>%s\n", param1, param2, byData);	return !_mbsicmp((const byte*)"ok;\r\nok;\r\n", (const byte*)byData);}CHROMA22293_API BOOL SetBlueOFF(){	std::string data = "b off;\r";	if (!g_SynSerial.IsOpen())		return FALSE;	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return FALSE;	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return FALSE;	}	printf("b off=>%s\n", byData);	return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);}CHROMA22293_API BOOL SetBlueON(){	std::string data = "b on;\r";	if (!g_SynSerial.IsOpen())		return FALSE;	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return FALSE;	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return FALSE;	}	printf("b on=>%s\n", byData);	return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);}CHROMA22293_API BOOL SetGreenOFF(){	std::string data = "g off;\r";	if (!g_SynSerial.IsOpen())		return FALSE;	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return FALSE;	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return FALSE;	}	printf("g off=>%s\n", byData);	return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);}CHROMA22293_API BOOL SetGreenON(){	std::string data = "g on;\r";	if (!g_SynSerial.IsOpen())		return FALSE;	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return FALSE;	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return FALSE;	}	printf("g on=>%s\n", byData);	return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);}CHROMA22293_API BOOL SetRedOFF(){	std::string data = "r off;\r";	if (!g_SynSerial.IsOpen())		return FALSE;	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return FALSE;	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return FALSE;	}	printf("r off=>%s\n", byData);	return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);}CHROMA22293_API BOOL SetRedON(){	std::string data = "r on;\r";	if (!g_SynSerial.IsOpen())		return FALSE;	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return FALSE;	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return FALSE;	}	printf("r on=>%s\n", byData);	return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);}CHROMA22293_API BOOL SetKeyBoardLock(){	std::string data = "kb lock on;\r";	if (!g_SynSerial.IsOpen())		return FALSE;	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return FALSE;	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return FALSE;	}	printf("kb lock on=>%s\n", byData);	return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);}CHROMA22293_API BOOL SetKeyBoardUnLock(){	std::string data = "kb lock off;\r";	if (!g_SynSerial.IsOpen())		return FALSE;	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return FALSE;	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return FALSE;	}	printf("kb lock off=>%s\n", byData);	return !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData);}CHROMA22293_API void SetExceptionCallBack(DoException funExp){	g_funExp = funExp;}#elsestatic PyObject* OpenDevice(PyObject* self, PyObject* args){	// 应用程序路径;	unsigned int port, baudrate, datasize, parity, stopbite;	if (!PyArg_ParseTuple(args, "IIIII", &port, &baudrate, &datasize, &parity, &stopbite))		return NULL;	if (g_SynSerial.IsOpen())	{		g_SynSerial.CloseSerialPort();	}	// 返回进程Id;	return Py_BuildValue("b", g_SynSerial.OpenSerialPort(port, baudrate, datasize, parity, stopbite, 0, 0));}static PyObject* CloseDevice(PyObject* self, PyObject* args){	g_SynSerial.CloseSerialPort();	return Py_BuildValue("");	// 返回None;}static PyObject* GetBufStatus(PyObject* self, PyObject* args){	std::string data = "dummy;\r";	if (!g_SynSerial.IsOpen())		return Py_BuildValue("b", 0);	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return Py_BuildValue("b", 0);	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return Py_BuildValue("b", 0);	}	return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));}static PyObject* GetDeviceSoft(PyObject* self, PyObject* args){	std::string data = "report ver;\r";	if (!g_SynSerial.IsOpen())		return Py_BuildValue("s", _T(""));	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return Py_BuildValue("s", _T(""));	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return Py_BuildValue("s", _T(""));	}	g_strData = (char*)byData;	return Py_BuildValue("s", g_strData.c_str());}static PyObject* GetDeviceName(PyObject* self, PyObject* args){	std::string data = "report model;\r";	if (!g_SynSerial.IsOpen())		return Py_BuildValue("s", _T(""));	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return Py_BuildValue("s", _T(""));	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return Py_BuildValue("s", _T(""));	}	g_strData = (char*)byData;	return Py_BuildValue("s", g_strData.c_str());}static PyObject* SetPattern(PyObject* self, PyObject* args){	unsigned int param;	if (!PyArg_ParseTuple(args, "I", ¶m))		return NULL;	char data[128] = { 0 };	_stprintf_s(data, _T("run ptn %ld;\r"), param);	if (!g_SynSerial.IsOpen())		return Py_BuildValue("b", 0);	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data, sizeof(data));	if (dwData != sizeof(data))	{		return Py_BuildValue("b", 0);	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return Py_BuildValue("b", 0);	}	return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));}static PyObject* SetTiming(PyObject* self, PyObject* args){	unsigned int param;	if (!PyArg_ParseTuple(args, "I", ¶m))		return NULL;	char data[128] = { 0 };	_stprintf_s(data, _T("run tim %ld;\r"), param);	if (!g_SynSerial.IsOpen())		return Py_BuildValue("b", 0);	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data, sizeof(data));	if (dwData != sizeof(data))	{		return Py_BuildValue("b", 0);	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return Py_BuildValue("b", 0);	}	return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));}static PyObject* SetTimingPattern(PyObject* self, PyObject* args){	unsigned int param1, param2;	if (!PyArg_ParseTuple(args, "II", ¶m1, ¶m2))		return NULL;	char data[128] = { 0 };	_stprintf_s(data, _T("run tim %ld;run tim %ld;\r"), param1, param2);	if (!g_SynSerial.IsOpen())		return Py_BuildValue("b", 0);	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data, strlen(data));	if (dwData != strlen(data))	{		return Py_BuildValue("b", 0);	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return Py_BuildValue("b", 0);	}	return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\nok;\r\n", (const byte*)byData));}static PyObject* SetBlueOFF(PyObject* self, PyObject* args){	std::string data = "b off;\r";	if (!g_SynSerial.IsOpen())		return Py_BuildValue("b", 0);	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return Py_BuildValue("b", 0);	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return Py_BuildValue("b", 0);	}	return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));}static PyObject* SetBlueON(PyObject* self, PyObject* args){	std::string data = "b on;\r";	if (!g_SynSerial.IsOpen())		return Py_BuildValue("b", 0);	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return Py_BuildValue("b", 0);	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return Py_BuildValue("b", 0);	}	return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));}static PyObject* SetGreenOFF(PyObject* self, PyObject* args){	std::string data = "g off;\r";	if (!g_SynSerial.IsOpen())		return Py_BuildValue("b", 0);	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return Py_BuildValue("b", 0);	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return Py_BuildValue("b", 0);	}	return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));}static PyObject* SetGreenON(PyObject* self, PyObject* args){	std::string data = "g on;\r";	if (!g_SynSerial.IsOpen())		return Py_BuildValue("b", 0);	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return Py_BuildValue("b", 0);	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return Py_BuildValue("b", 0);	}	return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));}static PyObject* SetRedOFF(PyObject* self, PyObject* args){	std::string data = "r off;\r";	if (!g_SynSerial.IsOpen())		return Py_BuildValue("b", 0);	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return Py_BuildValue("b", 0);	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return Py_BuildValue("b", 0);	}	return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));}static PyObject* SetRedON(PyObject* self, PyObject* args){	std::string data = "r on;\r";	if (!g_SynSerial.IsOpen())		return Py_BuildValue("b", 0);	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return Py_BuildValue("b", 0);	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return Py_BuildValue("b", 0);	}	return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));}static PyObject* SetKeyBoardLock(PyObject* self, PyObject* args){	std::string data = "kb lock on;\r";	if (!g_SynSerial.IsOpen())		return Py_BuildValue("b", 0);	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return Py_BuildValue("b", 0);	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return Py_BuildValue("b", 0);	}	return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));}static PyObject* SetKeyBoardUnLock(PyObject* self, PyObject* args){	std::string data = "kb lock off;\r";	if (!g_SynSerial.IsOpen())		return Py_BuildValue("b", 0);	// 写串口数据;	DWORD dwData = g_SynSerial.WriteComm((byte*)data.data(), data.size());	if (dwData != data.size())	{		return Py_BuildValue("b", 0);	}	// 读取串口数据;	byte byData[READ_LEN] = { 0 };	dwData = g_SynSerial.ReadComm(byData, READ_LEN);	if (dwData == 0)	{		return Py_BuildValue("b", 0);	}	return Py_BuildValue("b", !_mbsicmp((const byte*)"ok;\r\n", (const byte*)byData));}// 描述方法,暴露给python的函数;static PyMethodDef Chroma22293_Methods[] = {	{"OpenDevice",OpenDevice,METH_VARARGS,"打开设备"},	{"CloseDevice", CloseDevice, METH_VARARGS, "关闭设备"},	{"GetBufStatus", GetBufStatus, METH_VARARGS, "BUF测试"},	{"GetDeviceSoft", GetDeviceSoft, METH_VARARGS, "设备版本"},	{"GetDeviceName", GetDeviceName, METH_VARARGS, "设备信息"},	{"SetPattern", SetPattern, METH_VARARGS, "设置Ptn"},	{"SetTiming", SetTiming, METH_VARARGS, "设置Tim"},	{"SetTimingPattern", SetTimingPattern, METH_VARARGS, "设置Ptn和Tim"},	{"SetBlueOFF", SetBlueOFF, METH_VARARGS, "关蓝"},	{"SetBlueON", SetBlueON, METH_VARARGS, "开蓝"},	{"SetGreenOFF", SetGreenOFF, METH_VARARGS, "关绿"},	{"SetGreenON", SetGreenON, METH_VARARGS, "开绿"},	{"SetRedOFF", SetRedOFF, METH_VARARGS, "关红"},	{"SetRedON", SetRedON, METH_VARARGS, "开红"},	{"SetKeyBoardLock", SetKeyBoardLock, METH_VARARGS, "锁键盘"},	{"SetKeyBoardUnLock", SetKeyBoardUnLock, METH_VARARGS, "解锁键盘"},	//{"SetCallBack", SetCallBack, METH_VARARGS, "设置回调"},// Pyd暂时未了解如何实现回调;	{NULL,NULL}};// 初始模块;//格式:init<模块名称>PyMODINIT_FUNC initChroma22293(){	// 初始化pyd函数列表;	PyObject* m, * d;	m = Py_InitModule("Chroma22293", Chroma22293_Methods);	d = PyModule_GetDict(m);}#endif
 |