首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

为何小弟我在VC6下无法用MSComm控件实现通讯?具体内详,请进

2012-04-13 
为何我在VC6下无法用MSComm控件实现通讯?具体内详,请进!如题。我的代码大致如下:m_MSComm.SetCommPort(1)/

为何我在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

热点排行