各位工程项目的高手们,本人最近在利用串口接收和发送数据。
本人之前写好了一个程序,可以向任意标准RS-232串口设备发送数据
和 接收连接到计算机机箱后com端口的数据。本人用上了CSerialPort类,没有用上VC的MSCOM。操作系统是WindowsXP,台式机。现在本人有一个疑问,
在一般的台式计算机内,机箱后配有2个串口 com1 and com2,一般我在做通信的时候就用上一个串口而已,现在因为需要,所以打算实现以下功能:
1. 外部设备A连接至com1,并向com1发送数据;2. com1得到数据后,进行2个操作:
先把数据存入磁盘,
再从com2把数据发送出去,传达至设备B,设备B与com2相连,被动接收。3. 我的问题在于,如何在同一个程序内实现以上功能?
之前我在程序内按如下代码实现,只声明了一个CSerialPort m_SerialPort; if (m_SerialPort.InitPort(this, m_nCom, m_nBaud, m_cParity, m_nDatabits,
m_nStopbits, m_dwCommEvents, 512))
{
m_SerialPort.StartMonitoring();// 开始监视
……
}是不是要声明2个CSerialPort 对象才可以?
还请高手们指点!!
解决方案 »
- 求联众多开原理
- SOS--关于网络安全通信,使用什么语言最好呢?C还是C++,JAVA或则是VC++???多谢了
- 找软件开发合作者!(化学分析软件)
- 网关和路由有什么区别?
- 如何根据一BOOL值的改变,而触发不同的事件?!
- 如何像word一样,在vc对话框中插入位图对象,并且双击后可以在pbrush进行位图编辑,谢谢!
- 如何等多媒体定时器执行一段时间后取结果(100)
- 怎样用进度条准确地表现出当前图像处理的进度???请给点儿建议。
- 书籍推荐:我想学COM组件和ATL编程
- MFC 滚动条位置与范围不匹配
- 发现一恶心人的线程和进程显示MESSAGEBOX,死锁的BUG,帮忙解决~~~~~~~~
- 请教 insert into 的问题
异步监听串口数据,收到后进行处理。在一个程序内部完全可以实现的
发现里边有这么一个说法:“原类经过修改后,单串口通信没问题了,但是在进行多串口通信的时候,打开串口,然后关闭,再打开就会发现有异常!”为此,本人今天做了个验证,用上2个不同的CSerialPort对象,分别进行
InitPort
StartMonitoring
ClosePort
但是发现通信很正常,是不是本人对 书中作者的话理解不到位?不知各位高手看法如何?
如果声明了一个MSCOMM对象
那么可以利用如下语句进行发送 UpdateData(TRUE); //读取编辑框内容
m_ctrlMSCommCOM1.SetOutput(COleVariant(m_strEditCOM1TXData));//发送数据
但要发送的数据中间出现了ASCII码为0的字符 和 255的字符,如果当作一个字符串去发送那么就只能得到1ASS
0x00之后的字符都发送不过去了,请问这种情况怎么处理?
0xff之类的数据传输过去了。一楼的朋友所说的 异步监听串口数据 是什么意思呢?
二楼的朋友所说的 利用循环指针可以很容易的解决 为什么要用循环指针?有必要吗?
恩,我在代码的确没有这样做。
我只是在操作按钮,在对话框里边定义了2个按钮
打开 按钮里边执行
if (m_SerialPort.InitPort(this, m_nCom, m_nBaud, m_cParity, m_nDatabits,
m_nStopbits, m_dwCommEvents, 512))
{
m_fOpen = true;
m_SerialPort.StartMonitoring();// 开始监视
……
} 而关闭 按钮里边 执行
if(m_fOpen)
m_SerialPort.ClosePort();// 开始监视 我就循环地操作这2个按钮,让串口关闭 -> 打开 -〉 再关闭 -〉再打开……都没发现问题,看来是理解的方向不同。