如题,在用MSComm进行串口通信时,初始化设置如下:
/////////////////////////
m_ctrlComm.SetCommPort(1); //选择com1
if( !m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(TRUE);//打开串口
else
AfxMessageBox("cannot open serial port"); m_ctrlComm.SetSettings("19200,m,8,1"); //波特率19200,无校验,8个数据位,1个停止位 m_ctrlComm.SetInputMode(1); //1:表示以二进制方式检取数据
m_ctrlComm.SetRThreshold(1);
//参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
m_ctrlComm.SetInputLen(1024); //设置当前接收区数据长度为0
m_ctrlComm.GetInput();//先预读缓冲区以清除残留数据
/////////////////////////////输入输出数据皆为16进制(下同)。
发送数据为:1
接收到的数据为:3f 3f 3f而我用串口大师进行通信,设置如下:
串口:com1
波特率:19200
数据位:8
校验位:MASK
停止位:1
/////////////////发送数据:1
接收到的数据位:21 00 21
此接收的数据为正确数据。请问:1.(主要问题)大家以前碰到过这样的问题没,怎样解决的?是不是MSComm初始设置有问题,或者缺少了哪些设置?
2.大家知道串口大师是用什么编的吗?
/////////////////////////
m_ctrlComm.SetCommPort(1); //选择com1
if( !m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(TRUE);//打开串口
else
AfxMessageBox("cannot open serial port"); m_ctrlComm.SetSettings("19200,m,8,1"); //波特率19200,无校验,8个数据位,1个停止位 m_ctrlComm.SetInputMode(1); //1:表示以二进制方式检取数据
m_ctrlComm.SetRThreshold(1);
//参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
m_ctrlComm.SetInputLen(1024); //设置当前接收区数据长度为0
m_ctrlComm.GetInput();//先预读缓冲区以清除残留数据
/////////////////////////////输入输出数据皆为16进制(下同)。
发送数据为:1
接收到的数据为:3f 3f 3f而我用串口大师进行通信,设置如下:
串口:com1
波特率:19200
数据位:8
校验位:MASK
停止位:1
/////////////////发送数据:1
接收到的数据位:21 00 21
此接收的数据为正确数据。请问:1.(主要问题)大家以前碰到过这样的问题没,怎样解决的?是不是MSComm初始设置有问题,或者缺少了哪些设置?
2.大家知道串口大师是用什么编的吗?
解决方案 »
- select多线程的问题
- 如何将编辑框中输入的内容放到打印页中打印出来
- 如何在一个子窗口中添加菜单?
- ♀女程序员家园♀ (群号码:1930508)男士止步!
- 用的是VC7.0编写了一个用到COM库的程序,为什么执行时没错而调试时出错??? 很急呀! 快帮忙。
- 我想找一些傻瓜版的资料,教你一步一步做VC的那种 先来先拿分
- 请问vc能创建数据库吗?
- 用什么软件测量程序占用资源的大小?
- 征求TabCtrl控件上+图标的代码。
- 有项目开发经验的高手,请看看,有高分向送,不是关于技术的问题1。
- 我想写一个firefox plugin,请问如何实现类似于windows com中的event功能?
- 如何区分模拟键盘消息和真正的键盘消息?
m_ctrlComm.SetSettings("19200,m,8,1"); //波特率19200,奇偶校验为MASK,8个数据位,1个停止位
用API(CreateFile, ReadFile, WriteFile),看看是否还有这样的现象?