为何我在VC6下无法用MSComm控件实现通讯?具体内详,请进!
如题。我的代码大致如下:
m_MSComm.SetCommPort(1);//m_MSComm已和界面上MSComm控件绑定
m_MSComm.SetSettings( "9600,n,8,1 ");
m_MSComm.SetPortOpen(TRUE);
//下面是发送信息,可是不成功
CString str= "0123456789 "; //这里随便发条信息
if(m_MSComm.GetPortOpen())
m_MSComm.SetOutput(COleVariant(str));
//下面是控件的事件接收函数,可是也不成功,从未收到事件
void C****Dlg::OnCommMscomm1()
{
// TODO: Add your control notification handler code here
//事件接收,为简化问题,这里只让电脑发出一声蜂鸣
Beep(400,500);
}
我的代码是在两台用串口线相连的电脑上同时运行的,可双方都收不到对方发来的信息,请大家说一下为什么?(线的问题可以排除,因为我用它连接我的电脑和一台下位机,用的是别人采用C++ Build写的软件,可以正常通信的。)
我用API来代替MSComm控件也不行,太奇怪了!
请有经验的朋友说说原因,或者写个简单的工程,分别在两台电脑上运行后可以简单接、发对方电脑就可以了,先谢谢大家!
[解决办法]
串口设置:
m_MSComm.SetCommPort(1); //选择COM1
m_MSComm.SetInputMode(1); //输入方式为二进制方式
m_MSComm.SetInBufferSize(1024); //设置输入缓冲区大小
m_MSComm.SetOutBufferSize(512); //设置输出缓冲区大小
//波特率9600,无校验,8个数据位,1个停止位
m_MSComm.SetSettings( "9600,n,8,1 ");
if(!m_MSComm.GetPortOpen())
m_MSComm.SetPortOpen(TRUE);//打开串口
//参数1表示每当串口接收缓冲区中有多于
//或等于1个字符时将引发一个接收数据的OnComm事件
m_MSComm.SetRThreshold(1);
m_MSComm.SetInputLen(0); //设置当前接收区数据长度为0
m_MSComm.GetInput(); //先预读缓冲区以清除残留数据
先用这个 m_MSComm.SetOutput(COleVariant(m_strEditTXData)); 发送数据
应该就可以接收到了!
[解决办法]
加油,你行的
[解决办法]
没有用过这个控件,不过做过串口通讯的程序。是不是没有驱动啊?dll或sys?
[解决办法]
我给你发一下,API和MSComm两种都有。
API的是我自己写的,里边还包括TCP、UDP的功能。是个COM组件,里边有使用例子。
MSComm是我很久以前刚学编程时写的程序,代码很不好,你可以只看里边和MSComm相关的代码。
另忘了给我加分啊,我不以常回答问题,所以我现在已经没有分可用了,就靠你啦。。。。。
[解决办法]
mark~
nowish@gmail.com
[解决办法]
MSComm控件DTREnable属性设置成true