请教串口通信行家,怎样向串口写入数据 串口配置为:9600,n,8,1帧格式为* id data #*引导id:1个字节,表示命令代码data:2个字节,表示命令参数#:结束用bcd码表示请各位高手指点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.vckbase.com/code/listcode.asp?mclsid=9&sclsid=907 定义的:public: HANDLE hCommDev; DWORD dwBytesWritten; int comMask,comBuf,comState; DCB dcb; COMSTAT comStat; DWORD dwErrorDlag; CSendDlg(CWnd* pParent = NULL); // standard constructor初始化的程序:hCommDev = CreateFile("COM2",GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL); if(hCommDev==(HANDLE)-1) { char ErrorMsg[128]; switch(GetLastError()){ case IE_BADID: strcpy(ErrorMsg,"不支持此设备端口"); break; case IE_BAUDRATE: strcpy(ErrorMsg,"不支持此波特"); break; case IE_BYTESIZE: strcpy(ErrorMsg,"不支持此设备断口"); break; default: strcpy(ErrorMsg,"串口1初始化错误!"); } ::MessageBox(0,ErrorMsg,"串口命令",MB_ICONEXCLAMATION); return -1; } comMask = SetCommMask(hCommDev,EV_RXFLAG); comBuf =SetupComm(hCommDev,1024,512); comState = GetCommState(hCommDev,&dcb); dcb.BaudRate = CBR_4800; dcb.ByteSize = 8; dcb.Parity =EVENPARITY; dcb.StopBits = ONESTOPBIT; dcb.fBinary = 1; comState = SetCommState(hCommDev,&dcb); COMMTIMEOUTS CommTimeOuts; CommTimeOuts.ReadIntervalTimeout = MAXDWORD; CommTimeOuts.ReadTotalTimeoutMultiplier = 0; CommTimeOuts.ReadTotalTimeoutConstant = 0; CommTimeOuts.WriteTotalTimeoutMultiplier = 0; CommTimeOuts.WriteTotalTimeoutConstant = 1000; SetCommTimeouts(hCommDev,&CommTimeOuts); PurgeComm(hCommDev,PURGE_TXCLEAR); PurgeComm(hCommDev,PURGE_RXCLEAR); 数据写如串口的程序 CString str; str.Format("%4d",randdata); stringuse += str;// MessageBox(stringuse); char strOutMsg[400]; sprintf(strOutMsg,"%s",stringuse); BOOL bReturn =WriteFile(hCommDev,strOutMsg,strlen(strOutMsg), &dwBytesWritten,NULL); if(!bReturn) AfxMessageBox("Fuck COM2"); CHtmlView 缓存问题 使用Installshield如何将"项目.exe"同一目录下的INI文件夹以及其中的*.ini文件打包进去? 字符串赋值问题 MFC菜单弹出对话框 求助:一模式对话框闪烁问题 求多边形面积 dialog如何隐藏titlebar上的按钮 CString::ReleaseBuffer有什么用呀??好像没什么作用呀? 我遇到了大困难ADO 请问Opencv有连通域检测标识的函数吗? 有没有方便使用png lib的类 一个关于从c++过度到vc的 问题?? 希望大家能够帮我解决
public:
HANDLE hCommDev;
DWORD dwBytesWritten;
int comMask,comBuf,comState;
DCB dcb;
COMSTAT comStat;
DWORD dwErrorDlag;
CSendDlg(CWnd* pParent = NULL); // standard constructor初始化的程序:
hCommDev = CreateFile("COM2",GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,NULL); if(hCommDev==(HANDLE)-1) {
char ErrorMsg[128];
switch(GetLastError()){
case IE_BADID:
strcpy(ErrorMsg,"不支持此设备端口");
break;
case IE_BAUDRATE:
strcpy(ErrorMsg,"不支持此波特");
break;
case IE_BYTESIZE:
strcpy(ErrorMsg,"不支持此设备断口");
break;
default:
strcpy(ErrorMsg,"串口1初始化错误!");
}
::MessageBox(0,ErrorMsg,"串口命令",MB_ICONEXCLAMATION);
return -1;
} comMask = SetCommMask(hCommDev,EV_RXFLAG);
comBuf =SetupComm(hCommDev,1024,512);
comState = GetCommState(hCommDev,&dcb);
dcb.BaudRate = CBR_4800;
dcb.ByteSize = 8;
dcb.Parity =EVENPARITY;
dcb.StopBits = ONESTOPBIT;
dcb.fBinary = 1; comState = SetCommState(hCommDev,&dcb); COMMTIMEOUTS CommTimeOuts;
CommTimeOuts.ReadIntervalTimeout = MAXDWORD;
CommTimeOuts.ReadTotalTimeoutMultiplier = 0;
CommTimeOuts.ReadTotalTimeoutConstant = 0;
CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
CommTimeOuts.WriteTotalTimeoutConstant = 1000;
SetCommTimeouts(hCommDev,&CommTimeOuts);
PurgeComm(hCommDev,PURGE_TXCLEAR);
PurgeComm(hCommDev,PURGE_RXCLEAR);
数据写如串口的程序
CString str;
str.Format("%4d",randdata);
stringuse += str;
// MessageBox(stringuse); char strOutMsg[400];
sprintf(strOutMsg,"%s",stringuse);
BOOL bReturn =WriteFile(hCommDev,strOutMsg,strlen(strOutMsg),
&dwBytesWritten,NULL);
if(!bReturn) AfxMessageBox("Fuck COM2");