以下是两段设置波涛率等参数的语句,大家帮我看看怎么回事第一种方法报错为:error C2664: 'GetCommState' : cannot convert parameter 2 from 'struct _DCB' to 'struct _DCB *' No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called 第二种方法没报错,可是也没起作用。这是怎么回事? GetCommState(hFile,dcb); dcb.BaudRate=CBR_9600; //dcb.fParity=N; dcb.ByteSize=8; dcb.StopBits=1; GetCommState(hFile,dcb); // PurgeComm(hFile,PURGE_TXCLEAR); */ FillMemory(&dcb,sizeof(dcb),0); dcb.DCBlength=sizeof(dcb); if(!BuildCommDCB("9600,n,8,1",&dcb)) { return ; }
这是你从程序里复制过来的?
你的拼写让我无语
我还是把源代码让大家帮我看看吧
HANDLE hCom;
DCB dcb;
hCom=CreateFile("COM1",
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if(hCom==(HANDLE)-1)
{
AfxMessageBox("打开COM1失败");
// return FALSE;
}
//return TRUE;
dcb BaudRate=9600;
dcb ByteSize=7;
dcb Parity=EVENPARITY;
dcb StopBits=2;
dcb fBinary=TRUE;
dcb fParity=TRUE;
if(SetCommState(hCom,&dcb))
{
MessageBox("串口设置出错。");
}
SetupComm(hCom,1024,1024);
PurgeComm(hCom,PURCE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
BOOL WtiteFile(
HANDLE hFile,
LPCVOID IpBuffer,
DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberofBytesWriten,
LPOVERLAPPED lpOverlapped);
BOOL CloseHandle(HANDLE hObject);
帮我看看,编译就说里面的函数没有定义,可是我已经包含windows.h这个文件了
Serial Communications
这个在stdafx.h/afx.h/afxver_.h/afxv_w32.h里已经包含过了
另外你还要注意一下你的设备是不是连接到COM1了
设备已经连接到COM11了,调试程序我这有虚拟串口,环境已经搭建好了,这不是问题。
Create File创建文件的意思对于大于9的串口,文件名需要用 _T("\\\\.\\COM11")这样的方式
Create File创建文件的意思对于大于9的串口,文件名需要用 _T("\\\\.\\COM11")这样的方式
Create File创建文件的意思 这个函数我没见过,不过我试了,还是不行
请大家帮忙想想,我急用。谢了
char lpBuf[]="Hello World!";
HANDLE hFile;
DCB dcb;
hFile=CreateFile("COM1",
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if(hFile==(HANDLE)-1)
{
AfxMessageBox("打开COM1失败");
// return FALSE;
}
//return TRUE;
FillMemory(&dcb,sizeof(dcb),0);
dcb.DCBlength=sizeof(dcb);
if(!BuildCommDCB("9600,n,8,1",&dcb)){
return ;
}
else
/* dcb BaudRate=9600;
dcb ByteSize=7;
dcb Parity=EVENPARITY;
dcb StopBits=2;
dcb fBinary=TRUE;
dcb fParity=TRUE;
if(SetCommState(hCom,&dcb))
{
MessageBox("串口设置出错。");
}
SetupComm(hCom,1024,1024);
PurgeComm(hCom,PURCE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
*/ WriteFile(hFile,lpBuf,strlen(lpBuf),NULL,NULL);
CloseHandle(hFile);
这段程序已经调通,但是
我发的波涛9600,N,8,1
可是串口显示1200,E,7,1
大家看看这是怎么回事?先谢了
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
第二种方法没报错,可是也没起作用。这是怎么回事?
GetCommState(hFile,dcb);
dcb.BaudRate=CBR_9600;
//dcb.fParity=N;
dcb.ByteSize=8;
dcb.StopBits=1;
GetCommState(hFile,dcb);
// PurgeComm(hFile,PURGE_TXCLEAR);
*/ FillMemory(&dcb,sizeof(dcb),0);
dcb.DCBlength=sizeof(dcb);
if(!BuildCommDCB("9600,n,8,1",&dcb))
{
return ; }