我就按他书上的第一个程序输入,编译连接都没问题,但是用串口助手来调试,发现编的窗口只能发送,不能接受,为什么呢?谢谢!初始化串口如下:m_ctrlComm.SetCommPort(1);//选择端口1
m_ctrlComm.SetSettings("4800,N,8,1");//波特率,校验位
m_ctrlComm.SetInputMode(1);//设置接收数据模式是二进制
m_ctrlComm.SetRThreshold(1);//有字符产生响应事件
m_ctrlComm.SetInBufferCount(0);//清空接收缓冲区
m_ctrlComm.SetInputLen(1);//一次从接收缓冲区读取一个字节
m_ctrlComm.SetPortOpen(TRUE);//打开串口
事件消息处理: // TODO: Add your control notification handler code here
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len ,k;
BYTE rxdata[2048];//设置为byte数组
CString strtemp;
if (m_ctrlComm.GetCommEvent()==2) 事件值为2表示接受缓冲区有字符
{
variant_inp=m_ctrlComm.GetInput();读缓冲区
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize();
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);
for(k=0;k<len;k++)
{
BYTE bt=*(char*)(rxdata+k);
strtemp.Format("%c",bt);
m_strEditRXData2+=strtemp;
}
}
UpdateData(FALSE);
}窗口内容很简单就一个接受界面,一个发送界面和一个发送按钮。
m_ctrlComm.SetSettings("4800,N,8,1");//波特率,校验位
m_ctrlComm.SetInputMode(1);//设置接收数据模式是二进制
m_ctrlComm.SetRThreshold(1);//有字符产生响应事件
m_ctrlComm.SetInBufferCount(0);//清空接收缓冲区
m_ctrlComm.SetInputLen(1);//一次从接收缓冲区读取一个字节
m_ctrlComm.SetPortOpen(TRUE);//打开串口
事件消息处理: // TODO: Add your control notification handler code here
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len ,k;
BYTE rxdata[2048];//设置为byte数组
CString strtemp;
if (m_ctrlComm.GetCommEvent()==2) 事件值为2表示接受缓冲区有字符
{
variant_inp=m_ctrlComm.GetInput();读缓冲区
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize();
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);
for(k=0;k<len;k++)
{
BYTE bt=*(char*)(rxdata+k);
strtemp.Format("%c",bt);
m_strEditRXData2+=strtemp;
}
}
UpdateData(FALSE);
}窗口内容很简单就一个接受界面,一个发送界面和一个发送按钮。
解决方案 »
- 如何判断一个对话框中的button是否获得焦点
- vc中的实现代码库折叠功能的符号是啥
- SDI程序,菜单弹出后点view区域收不回去!
- 工具栏的分割
- 请问怎么实现winrar安装以后在系统右键的关联
- 为什么EnumDesktopWindows只枚举了一个window?
- 在得到一个文本框的句柄后,我想让它里面的文字有一部分是被选中的,就是背景是蓝色的那种
- 为什么我的TreeView没有线??!!!
- CDialogBar的一个问题
- 大家晚上好,请教个问题,如果我获得了某一个窗口的句柄,之后我如何控制这个窗口呢,例如向这个窗口的编辑框发送文字,单击某个按扭,答复者立刻送分
- 如何在MFC下建立Opengl框架
- 图像变形问题(image warping)
m_ctrlComm.GetInput();//这句加到初始化的最后一句
先试试吧
m_ctrlComm.SetOutBufferSize(512);
m_ctrlComm.SetSettings("9600,n,8,1"); if (!m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(TRUE);
m_ctrlComm.SetRThreshold(1);
m_ctrlComm.SetInputLen(0);
m_ctrlComm.GetInput();
不好意思刚才把初始化程序粘贴错了,这次是书上的程序,运行还是不行
看有没有进入if (m_ctrlComm.GetCommEvent()==2)
,怎么回事呢,明明按书上写的?