我有一个串口属性设置问题
以下是两段设置波涛率等参数的语句,大家帮我看看怎么回事第一种方法报错为: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 ;}
帮忙指点一下,我急用,谢了
以下是两段设置波涛率等参数的语句,大家帮我看看怎么回事第一种方法报错为: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 ;}
帮忙指点一下,我急用,谢了
解决方案 »
- MFC Grid Control Tutorials
- 请问怎么在ASP中调用VC编写的DLL?
- CDialogBar的派生类的OnPaint函数里,为何BitBlt有效而Rectangle无效?
- 用DLL创建了全局钩子,现在需要判断鼠标是否双击在桌面上怎么判断?
- 如何通过编程来禁用和启用设备
- GetDlgItem(IDC_STATIC)->SetWindowText(ss);出错SetDlgItemText(IDC_STATIC,ss);没事 这是为什么?
- 在VC6.0里制作用VC编写的程序的发行版软件的问题
- 高手请赐教:CComboBox弹出下拉框时,鼠标移到某一项(还未点击),如何触发一个事件?
- RenderFile 可以播放媒体,而IMediaDet 打开却得不到有效的视频流?
- 请教一个容易的问题。
- 求助:调试运行正常通过,直接运行exe报错
- 一个很奇怪的gdi+问题。
tmp = port.Right(1); //端口号
m_ComPort.put_CommPort(atoi(tmp)); if(m_ComPort.get_PortOpen()) //如果串口已经打开
m_ComPort.put_PortOpen(FALSE); // SetInputLen 设置为 0 时,使用 GetInput 将使 MSComm 控件读取接收缓冲区中全部的内容。
m_ComPort.put_InputLen(0);
m_ComPort.put_InBufferSize(COM_BUFFER_SIZE); //为1表示有一个字符引发一个事件 //接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件。
//如果是一次N个字符,则相应修改
m_ComPort.put_RThreshold(1); m_ComPort.put_InputMode(1); //设置输入方式为二进制方式 strSetting = comParam.baudRate + ","; //"38400,E,8,1"; strSetting += "n"; strSetting += ","; strSetting += comParam.dataBit; strSetting += ","; strSetting += comParam.stopBit; m_ComPort.put_Settings(strSetting); //设置波特率等参数 数据位 停止位 校验位
m_ComPort.put_SThreshold(0); //不触发发送事件 //打开串口
m_ComPort.put_PortOpen(TRUE);
m_ComPort.get_Input(); //先预读缓冲区以清楚残留数据
可是我不用 MSComm 这个控件,我用的是api函数,
第二个帖子我用的就是这个函数,可是报错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可我不知道该怎么办好了,帮我出出主意,谢谢
dcb.BaudRate=CBR_9600;
dcb.fParity=NOPARITY;
dcb.ByteSize=8;
dcb.StopBits=(BYTE)ONESTOPBIT;
GetCommState(hFile, &dcb);
PurgeComm(hFile,PURGE_TXCLEAR);
这段程序通过了,可是波涛率没有还是没有变化呀,大家帮我再看看怎么回事。谢了
GetCommState(hFile, &dcb); //更改部分参数
dcb.BaudRate=CBR_9600;
dcb.fParity=NOPARITY;
dcb.ByteSize=8;
dcb.StopBits=(BYTE)ONESTOPBIT;//设置参数
SetCommState(hFile, &dcb);
if(i%2==0){
hFile=CreateFile("COM1",
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL); GetCommState(hFile, &dcb);
dcb.BaudRate=2400;
dcb.fParity=NOPARITY;
dcb.ByteSize=8;
dcb.StopBits=(BYTE)ONESTOPBIT;
GetCommState(hFile, &dcb);
PurgeComm(hFile,PURGE_TXCLEAR);
//MessageBox("串口已经打开");
i++;
}
else {
CloseHandle(hFile);
i=0;
// MessageBox("串口已经关闭"); }这个程序我是建立了一个基于MFC对话框的应用程序,这是按钮事件
可是我运行程序,用虚拟串口调试程序,波涛率 显示1200,N,8,1这与我设置的不符,
大家帮我看看这段程序有问题吗?为什么不符?