CSerialPort 类通信问题 5C

我用CSrialPort类写了一个简单的上位机控制软件,设备通过主板串口连接电脑没有任何问题,通过USB转RS232串口线连接电脑
就不能控制,USB转RS232串口驱动正常,USB转RS232线收发正常。用USB串口转接线时,用示波器测试上位机的数据发布出去。

1个回答

如里别的程序用同一串口中, 用USB转串口线了也没问题, 看一下你程序串口设置参数, termios 中的c_cfilg的是SRTSCTS是1还是0,
如果是0, 那这个串口只能接收不能发送, 这样, 你用示波器当然测不到发送数据。

fengjunsen
angle喂 现在用USB转串口线后,上位机程序不能连续发送指令,除非下位机回传指令,上位机才能又发送一条指令,但仅限一条
4 年多之前 回复
fengjunsen
angle喂 您说的termios是什么不懂,现在的问题是不用USB转串口线的话上位机程序可以连续发送指令,现在用USB转串口线
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
CSerialPort类 VS2015 unicode可用

自修改的CSerialPort类,在VS2015下调试正常工作,支持unicode字符集,支持字符串和二进制(16进制)收发,串口反复打开关闭正常,支持查询计算机内可用串口

CSerialPort串口类最新修正版2016-05-07

CSerialPort =========== First Version by Remon Spekreijse on 2000-02-08 http://www.codeguru.com/cpp/i-n/network/serialcommunications/article.php/c2483/A-communication-class-for-serial-port.htm Second Version by mrlong on 2007-12-25 https://code.google.com/p/mycom/ * 增加 ClosePort * 增加 WriteToPort 两个方法 * 增加 SendData 与 RecvData 方法 by liquanhai on 2011-11-04 http://blog.csdn.net/liquanhai/article/details/4955253 * 增加 ClosePort 中交出控制权,防止死锁问题 by liquanhai on 2011-11-06 http://blog.csdn.net/liquanhai/article/details/6941574 * 增加 ReceiveChar 中防止线程死锁 by viruscamp on 2013-12-04 https://github.com/viruscamp/CSerialPort * 增加 IsOpen 判断是否打开 * 修正 InitPort 中 parity Odd Even 参数取值错误 * 修改 InitPort 中 portnr 取值范围,portnr>9 时特殊处理 * 取消对 MFC 的依赖,使用 HWND 替代 CWnd,使用 win32 thread 函数而不是 MFC 的 * 增加用户消息编号自定义,方法来自 CnComm by itas109 on 2014-01-10 http://blog.csdn.net/itas109/article/details/18358297 * 解决COM10以上端口无法显示的问题 * 扩展可选择端口,最大值MaxSerialPortNum可以自定义 * 添加QueryKey()和Hkey2ComboBox两个方法,用于自动查询当前有效的串口号。 by liquanhai on 2014-12-18 * 增加一些处理措施,主要是对减少CPU占用率 by itas109 on 2016-05-07 http://blog.csdn.net/itas109 * 修复每次打开串口发送一次,当串口无应答时,需要关闭再打开或者接收完数据才能发送的问题。 解决办法:在m_hEventArray中调整m_hWriteEvent的优先级高于读的优先级。CommThread(LPVOID pParam)函数中读写的位置也调换。 参考:http://zhidao.baidu.com/link?url=RSrbPcfTZRULFFd2ziHZPBwnoXv1iCSu_Nmycb_yEw1mklT8gkoNZAkWpl3UDhk8L35DtRPo5VV5kEGpOx-Gea * 修复停止位在头文件中定义成1导致SetCommState报错的问题,应为1对应的停止位是1.5。UINT stopsbits = ONESTOPBIT * switch(stopbits)和switch(parity)增加默认情况,增强程序健壮性 博客:blog.csdn.net/itas109 Email:itas109@qq.com

基于MFC的串口类CSerialPort的使用

VS2010的MFC环境中串口CSerialPort类的使用说明

C++编程->基于CSerialPort类的串口通信测试

先写一段单片机的代码,用于上位机测试。 void setup() { Serial.begin(9600); // opensserial port, sets data rate to 9600 bps } void loop() { // put your main code here, to run repeatedly: Serial.println(10); } 下面

CSerialPort串口类的修正版2014-01-10

这是一份优秀的类文件,好多的地方值得我们学习,具体在多线程,事件,自定义消息,类的封装方面等等。 Remon提供的串口类网址为: http://codeguru.earthweb.com/network/serialport.shtml,   其他贡献者:http://blog.csdn.net/liquanhai/article/details/6941574 代码下载:http://d

CSerialPort串口类最新修正版2017-03-12

如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033最新进展:CSerialPort串口类最新修正版2017-12-16http://blog.csdn.net/itas109/article/details/78823082 这是一份优秀的串口类文件,好多的地方值得我们学习,具体在多线程,事件,自定义消息,类的封装方面等等。Remon提

使用CserialPort类出现的一些问题的解决

使用CserialPort类出现的一些问题的解决:1 在if(m_SerialPort.InitPort(this,nPort,9600,'N',8,1,EV_RXFLAG | EV_RXCHAR,512))报错::\Documents and Settings\Administrator\桌面\2_22\CseroalPort\CseroalPortDlg.cpp(131) : error C2...

CSerialPort串口类最新修正版2016-08-10

CSerialPort First Version by Remon Spekreijse on 2000-02-08 http://www.codeguru.com/cpp/i-n/network/serialcommunications/article.php/c2483/A-communication-class-for-serial-port.htm Second Version by mrlong on 2007-12-25 https://code.google.com/p/mycom/ 增加 ClosePort 增加 WriteToPort 两个方法 增加 SendData 与 RecvData 方法 by liquanhai on 2011-11-04 http://blog.csdn.net/liquanhai/article/details/4955253 增加 ClosePort 中交出控制权,防止死锁问题 by liquanhai on 2011-11-06 http://blog.csdn.net/liquanhai/article/details/6941574 增加 ReceiveChar 中防止线程死锁 by viruscamp on 2013-12-04 https://github.com/viruscamp/CSerialPort 增加 IsOpen 判断是否打开 修正 InitPort 中 parity Odd Even 参数取值错误 修改 InitPort 中 portnr 取值范围,portnr>9 时特殊处理 取消对 MFC 的依赖,使用 HWND 替代 CWnd,使用 win32 thread 函数而不是 MFC 的 增加用户消息编号自定义,方法来自 CnComm by itas109 on 2014-01-10 http://blog.csdn.net/itas109/article/details/18358297 解决COM10以上端口无法显示的问题 扩展可选择端口,最大值MaxSerialPortNum可以自定义 添加QueryKey()和Hkey2ComboBox两个方法,用于自动查询当前有效的串口号。 by liquanhai on 2014-12-18 增加一些处理措施,主要是对减少CPU占用率 by itas109 on 2016-05-07 http://blog.csdn.net/itas109 修复每次打开串口发送一次,当串口无应答时,需要关闭再打开或者接收完数据才能发送的问题。 解决办法:在m_hEventArray中调整m_hWriteEvent的优先级高于读的优先级。CommThread(LPVOID pParam)函数中读写的位置也调换。 参考:http://zhidao.baidu.com/link?url=RSrbPcfTZRULFFd2ziHZPBwnoXv1iCSu_Nmycb_yEw1mklT8gkoNZAkWpl3UDhk8L35DtRPo5VV5kEGpOx-Gea 修复停止位在头文件中定义成1导致SetCommState报错的问题,应为1对应的停止位是1.5。UINT stopsbits = ONESTOPBIT switch(stopbits)和switch(parity)增加默认情况,增强程序健壮性 by itas109 on 2016-06-22 http://blog.csdn.net/itas109 增加ReceiveStr方法,用于接收字符串(接收缓冲区有多少字符就接收多少字符)。 解决ReceiveChar只能接收单个字符的问题。 by itas109 on 2016-06-29 http://blog.csdn.net/itas109 解决RestartMonitoring方法和StopMonitoring方法命令不准确引起的歧义,根据实际作用。 将RestartMonitoring更改为ResumeMonitoring,将StopMonitoring更改为SuspendMonitoring。 增加IsThreadSuspend方法,用于判断线程是否挂起。 改进ClosePort方法,增加线程挂起判断,解决由于线程挂起导致串口关闭死锁的问题。 增加IsReceiveString宏定义,用于接收时采用单字节接收还是多字节接收 by itas109 on 2016-08-02 http://blog.csdn.net/itas109 https://github.com/itas109 改进IsOpen方法,m_hComm增加INVALID_HANDLE_VALUE的情况,因为CreateFile方法失败返回的是INVALID_HANDLE_VALUE,不是NULL 改进ClosePort方法:增加串口句柄无效的判断(防止关闭死锁);m_hWriteEvent不使用CloseHandle关闭 改进CommThread、ReceiveChar、ReceiveStr和WriteChar方法中异常处理的判断,增加三种判断:串口打开失败(error code:ERROR_INVALID_HANDLE)、连接过程中非法断开(error code:ERROR_BAD_COMMAND)和拒绝访问(error code:ERROR_ACCESS_DENIED) 采用安全函数sprintf_s和strcpy_s函数替换掉sprintf和strcpy 改进QueryKey方法,用于查询注册表的可用串口值,可以搜索到任意的可用串口 改进InitPort方法,串口打开失败,增加提示信息:串口不存在(error code:ERROR_FILE_NOT_FOUND)和串口拒绝访问(error code:ERROR_ACCESS_DENIED) 加入viruscamp 取消对 MFC 的依赖 改进InitPort方法,如果上次串口是打开,再次调用InitPort方法,关闭串口需要做一定的延时,否则有几率导致ERROR_ACCESS_DENIED拒绝访问,也就是串口占用问题 初始化默认波特率修改为9600 修复一些释放的BUG 规范了一些错误信息,参考winerror.h -- error code definitions for the Win32 API functions 删除SendData和RecvData方法 by itas109 on 2016-08-10 http://blog.csdn.net/itas109 https://github.com/itas109 改进ReceiveStr方法,comstat.cbInQue = 0xcccccccc的情况(如串口异常断开),会导致RXBuff初始化失败 博客:blog.csdn.net/itas109 Email:itas109@qq.com

结合CSerialPort类,实现完整的串口收发功能

最近的的项目软件,需要增加串口的收发,因需要统一到同一个通讯通讯框架,(之前已有USB,读卡器等)从API上看,我最希望其能简化成如下的简洁形式:   bool UartRcvData(LPCBYTE data,DWORD len)   bool UartSendData(LPCBYTE data,DWORD len)   为了达到次目的,吃苦不少。一开始采用了MSCOMM的控件,该控件将w

VC CSerialPort类的使用方法详解

API 参考: 接口由两个类组成:CSerialException、CSerialPort。其成员函数和成员变量清单如下:   CSerialException::CSerialException   CSerialException::GetErrorMessage   CSerialException::m_dwError   CSerialPort::CSerialPort   C

CserialPort类函数解析及基本操作流程 基于C++

CserialPort类支持线连接(非MODEM)的串口编程操作。 CserialPort类是基于多线程的,其工作流程如下:首先设置好串口参数,再开启串口检测工作线程,串口检测工作线程检测到串口接收到的数据、流控制事件或其他串口事件后,就以消息方式通知主程序,激发消息处理函数来进行数据处理,这是对接受数据而言的,发送数据可直接向串口发送。 CserialPort类定义的

CSerialPort 接收时丢失数据问题

如需转载请标明出处:http://blog.csdn.net/itas109  QQ技术交流群:129518033   哪位大神对 CSerialPort (作者是Remon Spekreijse)这个类比较熟?最近发现使用USB转RS-232连PC时,使用CSerialPort接收时会发生丢数据的情况,丢失率1.3%左右。直接使用RS-232则不会出现丢数据的情况。不过使用串口助手也不会出

CSerialPort串口类工程实例

VS2015完整工程,基于自修改的CSerialPort类,MFC对话框,在VS2015 win10环境下调试正常工作,支持unicode字符集,支持字符串和二进制(16进制)收发,串口反复打开关闭正常,支持查询计算机内可用串口

最新版本CserialPort类 强大串口通讯类

简单而强大的多线程串口编程工具CserialPort类(附VC基于MFC详细编程步骤)

利用CSerialPort 类进行通信串口

示例代码: 打开串口 CSerialPort m_Port; //CSerialPort类对象 if (m_Port.InitPort(this, m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,512)) { m_Port.StartMonitoring(); m_ctrlIconOpenoff.SetIcon(m_hIconRed); strStatus.Format("STATUS:

【解决CSerialPort 串口类不能连续发送的问题】

前面问题是网上找的一个,如下: 我给一个机器发送串口命令,单个命令发送没问题, 连续发送的时候有问题,  比如,连续发了三个,如下: m_ser.WriteToPort(chSend1); m_ser.WriteToPort(chSend2); m_ser.WriteToPort(chSend3);  只有最后一个发送的起作用. 原因我就不解释了。 我

串口通信--CSerialport类

VS2013下使用CSerialPort类进行串口通信

MFC CSerialPort类串口通信

使用SerialPort类,在InitPort()函数中修改串口值为1或2,即可使用COM1或者2.

解决CserialPort类串口程序中WriteToPort只能发送一次问题

现象:每次打开串口只能发送一次,需要关闭再打开或者接收完数据才能发送 成因:在自带串口的电脑、或用优质的USB串口线都没有出现改问题,很有可能跟串口线的质量有关, 调试发现在调用玩WriteToPort函数 SetEvent(m_hWriteEvent);后第一次能够正常进入监视线程(CommThread(LPVOID pParam)) 调用WriteChar(port),然

CSerialPort串口类最新修正版2016-08-02

原博客网址:http://blog.csdn.NET/itas109  QQ技术交流群:129518033   这是一份优秀的串口类文件,好多的地方值得我们学习,具体在多线程,事件,自定义消息,类的封装方面等等。 Remon提供的串口类网址为: http://codeguru.earthweb.com/network/serialport.shtml, 由于已经运行十几年了,

最新版CSerialPort类

最新版(2014年)的CSerialPort类。开发串口通信软件使用方便,内含义低版本,可以进行比较,适合初学者最好不过。

CSerialPort类的源码(程序文件和头文件)

//头文件.h#ifndef __SERIALPORT_H__#define __SERIALPORT_H__#define WM_COMM_BREAK_DETECTED  WM_USER+1 // A break was detected on input.#define WM_COMM_CTS_DETECTED  WM_USER+2 // The CTS (clear-to-send) signal changed state. #define WM_COMM_DSR_DETECTED  WM_USER

CSerialPort类的使用

在程序中如果要用到多个串口,而且还要做很多复杂的处理,那么最好不用MSComm通讯控件,如果这时你还不愿意自己编写底层,就用这个类:CserialPort类。 作者是 Remon Spekreijse ,可在http://www.codeguru.com找到作者的基于对话框的可以同时检测4个串口的通信例子. 本文介绍基于文档的程序中的用法:(实例为计算机上两个串口之间的发送与接收) 编程步骤

CSerialPort类使用示例

这是CSerialPort类使用的简单例子,希望对您有所帮助

[MFC]使用强大的第三方串口类 CSerialPort

最近要写一个串口程序,用MFC自带COM组件的效果很差(一次接收一个缓冲区的数据,没办法像写嵌入式程序那样单字节就能触发中断接收那样),所以进行了一些研究,发现了一个 第三方串口类 很强大,效果非常好。资源下载第三方串口类资源下载:http://download.csdn.net/detail/humanking7/9064717步骤

如何添加CSerialPort类以及相应的消息函数

Step1:     将类文件SerialPort.cpp和SerialPort.h复制到工程所在的文件夹中,然后点击VC菜单上的Project->Add to Project->Files,再在打开的对话框里选择上面的两个文件,单击OK,就把类文件加入了当前工程,在Dlg.h中添加SerialPort.h说明:#include"SerialPort.h",完成这个类的加入。 Step

CSerialPort串口类最新修正版2018-06-21

CSerialPort是一份优秀的串口类文件,好多的地方值得我们学习,具体在多线程,事件,自定义消息,类的封装方面等等。 由于已经运行十几年了,原文的问答部分列出来这么多年来的问题,经过网友们的总结,补充和修改原来代码后,整理出一份相对比较完美的代码。

Cserialport.Mscom串口通信

主要是mfc自带的串口控件和Cserialport类控件通信

串口通信CSerialPort类WriteToPort不能连续发送的问题

转载于:http://hi.baidu.com/gilbertjuly/blog/item/e0c035450ec6c845500ffe5a.html   RS232串口通信原理详解见:hi.baidu.com/gilbertjuly/blog/item/902a3f11d4b42b0b203f2e39.html Gilbert在串口通信中使用CSerialPort时,发现连续发送有问题

CSerialPort类,彻底关闭串口

自己在前人的基础上更改,增加了线程关闭功能,能够彻底关闭串口,数据多次发送都可,串口使用完毕后可关闭

多线程串口通信 MFC CSerialPort

原文转载自http://www.cnblogs.com/xingrun/p/3587144.html?utm_source=tuicool&utm_medium=referral。 以下全为转载: 写在前面:          晚上应该继续完成未写完的代码,但Chrome上打开的标签实在太多了,约30个了,必须关掉一些,所以需要把自己看的整理一下然后关掉。本次主要写点MF

CSerialPort类 VS2008串口通信小程序,附带PPT讲解

项目属性字符集设置多字节字符集,串口数据收发为ASCII码,CSerialPort附带传输十六进制数据的WriteToPort函数。

CSerialPortV3.0.2串口类最新修正版2018-06-15

修复availablePorts函数不能枚举所有串口问题 fix function availablePorts can not enum all port error

CSerialPort串口类最新修正版2017-02-14

CSerialPort First Version by Remon Spekreijse on 2000-02-08 http://www.codeguru.com/cpp/i-n/network/serialcommunications/article.php/c2483/A-communication-class-for-serial-port.htm Second Version by mrlong on 2007-12-25 https://code.google.com/p/mycom/ 增加 ClosePort 增加 WriteToPort 两个方法 增加 SendData 与 RecvData 方法 by liquanhai on 2011-11-04 http://blog.csdn.net/liquanhai/article/details/4955253 增加 ClosePort 中交出控制权,防止死锁问题 by liquanhai on 2011-11-06 http://blog.csdn.net/liquanhai/article/details/6941574 增加 ReceiveChar 中防止线程死锁 by viruscamp on 2013-12-04 https://github.com/viruscamp/CSerialPort 增加 IsOpen 判断是否打开 修正 InitPort 中 parity Odd Even 参数取值错误 修改 InitPort 中 portnr 取值范围,portnr>9 时特殊处理 取消对 MFC 的依赖,使用 HWND 替代 CWnd,使用 win32 thread 函数而不是 MFC 的 增加用户消息编号自定义,方法来自 CnComm by itas109 on 2014-01-10 http://blog.csdn.net/itas109/article/details/18358297 解决COM10以上端口无法显示的问题 扩展可选择端口,最大值MaxSerialPortNum可以自定义 添加QueryKey()和Hkey2ComboBox两个方法,用于自动查询当前有效的串口号。 by liquanhai on 2014-12-18 增加一些处理措施,主要是对减少CPU占用率 by itas109 on 2016-05-07 http://blog.csdn.net/itas109 修复每次打开串口发送一次,当串口无应答时,需要关闭再打开或者接收完数据才能发送的问题。 解决办法:在m_hEventArray中调整m_hWriteEvent的优先级高于读的优先级。CommThread(LPVOID pParam)函数中读写的位置也调换。 参考:http://zhidao.baidu.com/link?url=RSrbPcfTZRULFFd2ziHZPBwnoXv1iCSu_Nmycb_yEw1mklT8gkoNZAkWpl3UDhk8L35DtRPo5VV5kEGpOx-Gea 修复停止位在头文件中定义成1导致SetCommState报错的问题,应为1对应的停止位是1.5。UINT stopsbits = ONESTOPBIT switch(stopbits)和switch(parity)增加默认情况,增强程序健壮性 by itas109 on 2016-06-22 http://blog.csdn.net/itas109 增加ReceiveStr方法,用于接收字符串(接收缓冲区有多少字符就接收多少字符)。 解决ReceiveChar只能接收单个字符的问题。 by itas109 on 2016-06-29 http://blog.csdn.net/itas109 解决RestartMonitoring方法和StopMonitoring方法命令不准确引起的歧义,根据实际作用。 将RestartMonitoring更改为ResumeMonitoring,将StopMonitoring更改为SuspendMonitoring。 增加IsThreadSuspend方法,用于判断线程是否挂起。 改进ClosePort方法,增加线程挂起判断,解决由于线程挂起导致串口关闭死锁的问题。 增加IsReceiveString宏定义,用于接收时采用单字节接收还是多字节接收 by itas109 on 2016-08-02 http://blog.csdn.net/itas109 https://github.com/itas109 改进IsOpen方法,m_hComm增加INVALID_HANDLE_VALUE的情况,因为CreateFile方法失败返回的是INVALID_HANDLE_VALUE,不是NULL 改进ClosePort方法:增加串口句柄无效的判断(防止关闭死锁);m_hWriteEvent不使用CloseHandle关闭 改进CommThread、ReceiveChar、ReceiveStr和WriteChar方法中异常处理的判断,增加三种判断:串口打开失败(error code:ERROR_INVALID_HANDLE)、连接过程中非法断开(error code:ERROR_BAD_COMMAND)和拒绝访问(error code:ERROR_ACCESS_DENIED) 采用安全函数sprintf_s和strcpy_s函数替换掉sprintf和strcpy 改进QueryKey方法,用于查询注册表的可用串口值,可以搜索到任意的可用串口 改进InitPort方法,串口打开失败,增加提示信息:串口不存在(error code:ERROR_FILE_NOT_FOUND)和串口拒绝访问(error code:ERROR_ACCESS_DENIED) 加入viruscamp 取消对 MFC 的依赖 改进InitPort方法,如果上次串口是打开,再次调用InitPort方法,关闭串口需要做一定的延时,否则有几率导致ERROR_ACCESS_DENIED拒绝访问,也就是串口占用问题 初始化默认波特率修改为9600 修复一些释放的BUG 规范了一些错误信息,参考winerror.h -- error code definitions for the Win32 API functions 删除SendData和RecvData方法 by itas109 on 2016-08-10 http://blog.csdn.net/itas109 https://github.com/itas109 改进ReceiveStr方法,comstat.cbInQue = 0xcccccccc的情况(如串口异常断开),会导致RXBuff初始化失败 by itas109 on 2017-02-14 http://blog.csdn.net/itas109 https://github.com/itas109 兼容ASCII和UNICODE编码 ReceiveStr函数中发送函数SendMessage的第二个参数采用结构体形式,包括portNr串口号和bytesRead读取的字节数,可以处理16进制的时候0x00截断问题 精简不必要的函数SendData和RecvData 尽量的取消对 MFC 的依赖,Hkey2ComboBox函数暂时保留 其他小问题修改 博客:blog.csdn.net/itas109 Email:itas109@qq.com

基于CSerialPort修改类的串口调试助手源代码(支持中文、自动保存等)

如需转载请标明出处:http://blog.csdn.net/itas109     本串口工具集成目前多数串口工具的优秀功能于一身,采用CSerialPort类进行编写,并在此基础上对该类进行了改进。本工具免费试用,永不过期。并且本着奉献的精神,公开本串口工具的源代码,希望广大用户反馈意见或建议。 源码地址:http://download.csdn.net/detail/itas10

CSerialPort类解析(一)

原文地址::http://xiaozhekobe.blog.163.com/blog/static/175646098201211075723333/ 相关网帖 1、CSerialPort类解析(二)----http://xiaozhekobe.blog.163.com/blog/static/175646098201211075929729/ 2、CSerialPo

S 串口编程 详解2 CSerialPort类 (SerialPort.h头文件和SerialPort.ccp实现文件)

串口编程 详解2   CSerialPort类   (SerialPort.h头文件和SerialPort.ccp实现文件) SerialPort.h头文件 #ifndef __SERIALPORT_H__ #define __SERIALPORT_H__ #define WM_COMM_BREAK_DETECTED WM_USER+1 // A break was detected o

vs2013 cSerialPort类 异步串口连续收发

vs2013 cSerialPort类 异步串口连续收发

基于CSerialPort修改类的串口调试助手源代码

本串口工具集成目前多数串口工具的优秀功能于一身,采用CSerialPort类进行编写,并在此基础上对该类进行了改进。本工具免费试用,永不过期。并且本着奉献的精神,公开本串口工具的源代码,希望广大用户反馈意见或建议。 源码地址:code.csdn.net/itas109/serialport_itas109 博客地址:blog.csdn.net/itas109 Email:itas109@qq.com 本软件主要在XP系统做测试使用。 本工具的主要功能有: 1.接收从串口进来的数据并在窗口显示. 2.所接收到的数据数据显示方式可以选择为字符方式或者HEX方式 3.支持显示中文 4.串口波特率可以选择为300bps-115200bps. 5.可以即时刷新存在的串口号.如果您增加了usb转串口等设备,点击刷新串口按钮后,新的串口号也会在列表中出现. 6.支持最多20个串口列表,包括COM1-COM256中的任意20个活跃串口 7.可以选择“5、6、7、8”四种数据长度. 8.可以选择为“1、2”两种停止位. 9.数据可以选择为“无、奇校验、偶校验、1、0”四种方式. 10.串口设置和字符串操作等设置在程序关闭时自动保存,打开时自动载入.您可以自行设置是否自动保存. 11.可以在字符串输入框输入您想发送的字符串,并发送. 12.可以在字符串输入框输入您想发送的HEX数据串,数据的值从00到FF,没有任何限制. 13.可以定时重复发送数据,并可以设置发送时间间隔. 14.可以在发送字符串时选择发送新行,即自动加上回车换行. 15.可以即时显示发送的字节数和接收到的字节数,按清除窗口将会清零. 16、可以设置自动清空功能,在达到30行数据时,自动清空。未设置时,达到100行,自动清空. 17、在手动发送旁边的按钮可以设置按ENTER发送数据,注意点击“打开串口”后,请使焦点离开该控件. 另外要说明的是,由于本人编程能力有效,未免可能有些差错,在此先声明一下,您可以免费使用和自由传播本软件,但是我不对本软件所造成的任何损失负责!如果你使用了本软件,即表明您愿意接收这一条款。如果你不能接受,请立即将其删除!

多线程串口编程工具CserialPort类(附VC基于MFC单文档协议通讯源程序及详细编程步骤)

老有人觉得MSComm通讯控件很土,更有人大声疾呼:忘了它吧。确实当我们对串口编程有了一定的了解后,应该用API函数写一个属于自己的串口程序,由于编程者对程序了解,对程序修改自如。但我一直没有停止过用MSComm通讯控件,那么简单的东西,对付简单的任务完全可以,但当我们需要在程序中用多个串口,而且还要做很多复杂的处理,那么最好不用MSComm通讯控件,如果这时你还不愿意自己编写底层,就用这个类:C

vc++基于VS2010用SerialPort类实现串口通信

基于VS2010平台下VC++使用SerialPort类完成了简单的串口通信,可以选择串口号

vs2005下利用CserialPort类进行串口通信

此资源是在vs2005下利用CserialPort类进行串口通信的源码 是我自己编写的一个入门级的串口通信工程 适合首次接触串口通信的朋友,希望对大家有帮助 里面有CserialPort类源码

CSerialPort多线程串口编程工具详解

1.前言 既然有了MSComm这种简单粗暴的控件,为什么还需要CSerialPort类?这是因为与前者相比,这个类在程序的发布上不需要加入其他的文件,而且CSerialPort提供给我们的函数都是开放透明的,允许我们进行二次改造。 CSerialPort类是一个非常好用的多线程串口编程工具,可以在很短的时间就可以完成一个串口通讯框架的搭建,所以有必要加以记载! 2.CSerial

CserialPort串口类最新修正版(解决关闭问题)2011-11-04

这是一份优秀的类文件,好多的地方值得我们学习,具体在多线程,事件,自定义消息,类的封装方面等等。 Remon提供的串口类网址为: http://codeguru.earthweb.com/network/serialport.shtml, 由于已经运行十几年了,原文的问答部分列出来这么多年来的问题,经过网友们的总结,补充和修改原来代码后,整理出一份相对比较完美的代码。分享给需要的朋友们,有

CserialPort类的入门实例

CserialPort类的入门实例,让初学者更好地认识,学习CserialPort类

VC++ 编写的 Modbus 协议类 并附带串口通信类SerialPort

VC++编写的 Modbus 协议类,支持Ascii和RTU两种模式,而且每个函数都有很详细的说明,一定会十分满意!并附带 串口通信类 SerialPort

基于CSerialPort修改类的串口调试助手源代码 [新20160509]

以前上传的资源(http://download.csdn.net/detail/scliu12345/9507199)有个小问题,根据 http://blog.csdn.net/itas109/article/details/51337538做了修正。采用CSerialPort类进行编写;将http://download.csdn.net/detail/minuby/3035400#comment修改为VS2013格式;详细说明见:http://blog.csdn.net/scliu12345/article/details/51286388

CSerialPort串口类最新修正版2016-06-29

CSerialPort First Version by Remon Spekreijse on 2000-02-08 http://www.codeguru.com/cpp/i-n/network/serialcommunications/article.php/c2483/A-communication-class-for-serial-port.htm Second Version by mrlong on 2007-12-25 https://code.google.com/p/mycom/ 增加 ClosePort 增加 WriteToPort 两个方法 增加 SendData 与 RecvData 方法 by liquanhai on 2011-11-04 http://blog.csdn.net/liquanhai/article/details/4955253 增加 ClosePort 中交出控制权,防止死锁问题 by liquanhai on 2011-11-06 http://blog.csdn.net/liquanhai/article/details/6941574 增加 ReceiveChar 中防止线程死锁 by viruscamp on 2013-12-04 https://github.com/viruscamp/CSerialPort 增加 IsOpen 判断是否打开 修正 InitPort 中 parity Odd Even 参数取值错误 修改 InitPort 中 portnr 取值范围,portnr>9 时特殊处理 取消对 MFC 的依赖,使用 HWND 替代 CWnd,使用 win32 thread 函数而不是 MFC 的 增加用户消息编号自定义,方法来自 CnComm by itas109 on 2014-01-10 http://blog.csdn.net/itas109/article/details/18358297 解决COM10以上端口无法显示的问题 扩展可选择端口,最大值MaxSerialPortNum可以自定义 添加QueryKey()和Hkey2ComboBox两个方法,用于自动查询当前有效的串口号。 by liquanhai on 2014-12-18 增加一些处理措施,主要是对减少CPU占用率 by itas109 on 2016-05-07 http://blog.csdn.net/itas109 修复每次打开串口发送一次,当串口无应答时,需要关闭再打开或者接收完数据才能发送的问题。 解决办法:在m_hEventArray中调整m_hWriteEvent的优先级高于读的优先级。CommThread(LPVOID pParam)函数中读写的位置也调换。 参考:http://zhidao.baidu.com/link?url=RSrbPcfTZRULFFd2ziHZPBwnoXv1iCSu_Nmycb_yEw1mklT8gkoNZAkWpl3UDhk8L35DtRPo5VV5kEGpOx-Gea 修复停止位在头文件中定义成1导致SetCommState报错的问题,应为1对应的停止位是1.5。UINT stopsbits = ONESTOPBIT switch(stopbits)和switch(parity)增加默认情况,增强程序健壮性 by itas109 on 2016-06-22 http://blog.csdn.net/itas109 增加ReceiveStr方法,用于接收字符串(接收缓冲区有多少字符就接收多少字符)。 解决ReceiveChar只能接收单个字符的问题。 by itas109 on 2016-06-29 http://blog.csdn.net/itas109 解决RestartMonitoring方法和StopMonitoring方法命令不准确引起的歧义,根据实际作用。 将RestartMonitoring更改为ResumeMonitoring,将StopMonitoring更改为SuspendMonitoring。 增加IsThreadSuspend方法,用于判断线程是否挂起。 改进ClosePort方法,增加线程挂起判断,解决由于线程挂起导致串口关闭死锁的问题。 增加IsReceiveString宏定义,用于接收时采用单字节接收还是多字节接收 博客:blog.csdn.net/itas109 Email:itas109@qq.com

用CSerialPort类收不到0x11, 0x13问题及解决办法

在VS2010平台下编写modbusRTU程序,在调试的时候发现CSerialPort串口类无法接收到0x11, 0x13,随后百度找的一篇Linux下的文章,大受启发,原文如下: linux串口接收不到0x11解决   网上许多流行的linux串口编程的版本中都没对c_iflag(termios成员变量)这个变量进行有效的设置,这样传送ASCII码时没什么问题,但传送二进制

关于CSerialPort串口类死循环的问题

在连接机器时初始化串口会出现死循环的问题。

立即提问
相关内容推荐