用CSerialPort类来写的串口通信,接收数据有问题 [问题点数:40分,结帖人lulanqin]

一键查看最优答案

确认一键查看最优答案?
本功能为VIP专享,开通VIP获取答案速率将提升10倍哦!
Bbs1
本版专家分:0
结帖率 100%
Bbs8
本版专家分:41715
Blank
黄花 2012年4月 VC/MFC大版内专家分月排行榜第二
Blank
蓝花 2012年5月 VC/MFC大版内专家分月排行榜第三
Bbs1
本版专家分:0
Bbs6
本版专家分:7658
CSerialPort跨平台串口库2018-11-20

如需转载请标明出处:http://blog.csdn.net/itas109  QQ技术交流群:129518033 前言 <em>CSerialPort</em>是一份优秀的<em>串口</em><em>类</em>文件,好多的地方值得我们学习,具体在多线程,事件,自定义消息,<em>类</em>的封装方面等等。 Remon提供的<em>串口</em><em>类</em>网址为: https://www.codeguru.com/cpp/i-n/network/serialcommunication...

CSerialPort使用总结

概况 1.MFC单文档模式内嵌浏览器 2.程序启动读取初期参数,以及参数的修改和保存 3.<em>串口</em>轮询检测读卡器 4.状态栏添加一个静态文本控件,点击控件,弹出对话框 具体说明: 1,内嵌浏览器 查看下列资料  具体不在详述 https://blog.csdn.net/techtiger/article/details/14155627 https://blog.csdn.net/u...

串口CSerialPort的简单用法

简单用法: 1.定义成员: <em>CSerialPort</em>m_SerialPort; 2.初始化: m_SerialPort.SetBufferSize(1024,1024); m_SerialPort.SetWnd(m_hWnd); m_SerialPort.SetNotifyNum(DEF_IN_BYTE_SIZE); if (m...

CSerialPort改进版

改良由Remon Spekreijse <em>写</em>的<em>CSerialPort</em><em>类</em>,主要改动有: 1、将接收缓冲区的数据<em>类</em>型由CString改用char*,并增加预存读数据的变量; 2、增加超时设置函数; 3、增加

串口CSerialPort(2010-03-05)

#ifndef __SERIALPORTTOOL_H__#define __SERIALPORTTOOL_H__#define WM_COMM_BREAK_DETECTED WM_USER+1#define WM_COMM_CTS_DETECTED WM_USER+2#define WM_COMM_DSR_DETECTED WM_USER+3#define WM_COMM_ERR_DETE

CSerialPort.h

<em>串口</em>头文件,添加CSerial<em>类</em>时会用到的头文件,代码已生成。

CSerialPort串口

转载自:http://blog.csdn.net/itas109  <em>CSerialPort</em><em>类</em>地址: https://github.com/itas109/<em>CSerialPort</em>

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

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

串口通信CSerialPort问题,马上给分,在线等

我从http://www.codeproject.com/system/cserialport.asp下载<em>串口</em><em>类</em>:<em>CSerialPort</em><em>类</em>。好像感觉这个<em>类</em>不好用,我不知道该怎么在自己的程序中用,我在做

龚建伟老师编串口CSerialPort问题--测试发现串口总是关闭不掉

各位高手,我在使用龚建伟老师编<em>写</em>的<em>串口</em><em>类</em><em>CSerialPort</em>时发现书中的原码存在无法关闭<em>串口</em>的<em>问题</em>,请赐教! (1)龚老师在InitPort中使用CreateFile函数对<em>串口</em>进行了初始化,并且使用

Cserialport串口助手,如何实现接受两个字节的数据,这是Cserialport中的接受数据处理函数

void <em>CSerialPort</em>::ReceiveChar(<em>CSerialPort</em>* port, COMSTAT comstat) { BOOL bRead = TRUE; BOOL bResult = TRUE; DWORD dwError = 0; DWORD BytesRead = 0; unsigned char RXBuff; for (;;) { // Gain ownership of the comm port critical section. // This process guarantees no other part of this program // is using the port object. EnterCriticalSection(&port->m_csCommunicationSync); // ClearCommError() will update the COMSTAT structure and // clear any other errors. bResult = ClearCommError(port->m_hComm, &dwError, &comstat); LeaveCriticalSection(&port->m_csCommunicationSync); // start forever loop. I use this type of loop because I // do not know at runtime how many loops this will have to // run. My solution is to start a forever loop and to // break out of it when I have processed all of the // data available. Be careful with this approach and // be sure your loop will exit. // My reasons for this are not as clear in this sample // as it is in my production code, but I have found this // solutiion to be the most efficient way to do this. if (comstat.cbInQue == 0) { // break out when all bytes have been read break; } EnterCriticalSection(&port->m_csCommunicationSync); if (bRead) { bResult = ReadFile(port->m_hComm, // Handle to COMM port &RXBuff, // RX Buffer Pointer 1, // Read one byte &BytesRead, // Stores number of bytes read &port->m_ov); // pointer to the m_ov structure // deal with the error code if (!bResult) { switch (dwError = GetLastError()) { case ERROR_IO_PENDING: { // asynchronous i/o is still in progress // Proceed on to GetOverlappedResults(); bRead = FALSE; break; } default: { // Another error has occured. Process this error. port->ProcessErrorMessage("ReadFile()"); break; } } } else { // ReadFile() returned complete. It is not necessary to call GetOverlappedResults() bRead = TRUE; } } // close if (bRead) if (!bRead) { bRead = TRUE; bResult = GetOverlappedResult(port->m_hComm, // Handle to COMM port &port->m_ov, // Overlapped structure &BytesRead, // Stores number of bytes read TRUE); // Wait flag // deal with the error code if (!bResult) { port->ProcessErrorMessage("GetOverlappedResults() in ReadFile()"); } } // close if (!bRead) LeaveCriticalSection(&port->m_csCommunicationSync); // notify parent that a byte was received ::SendMessage((port->m_pOwner)->m_hWnd, WM_COMM_RXCHAR, (WPARAM) RXBuff, (LPARAM) port->m_nPortNr); } // end forever loop }

如何让程序等待Cserialport串口接收所有数据

我操作的仪器返回值中有"OK"作为结束标志,并且需要好几秒才能返回所有数据。所以我在程序运行过程中必须等待oncomm函数接受数据,并且判断收到"OK"才能继续向下运行程序。我<em>写</em>了个判断的函数,可是总

利用CSerialPort 进行通信串口

示例代码: 打开<em>串口</em> <em>CSerialPort</em> m_Port; //<em>CSerialPort</em><em>类</em>对象 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:

Cedit自动显示最后一行

LineScroll(m_DbCtrl.GetLineCount(),0);

CSerialPortV3.0.1串口最新修正版2018-02-14

新增功能 * ★修复不能连续发送的<em>问题</em> ★ fix can not continue send error * ★一次性<em>写</em>入尽可能多的数据到<em>串口</em> ★ try best to send mutil da

关于串口通信CSerialPortWriteToPort的问题

我又来问<em>问题</em>了。。。 我有32个edit的控件,地址分别为IDC_edit1—edit32,资源内地址也是连续的。我想用一个循环用WriteToPort分别输出。 对应的关联变量是m_press1——

CSerialport用于多串口烧录MCU时丢失数据的分析与解决办法

最近在做用于GD32MCU 多<em>串口</em>烧录的一个项目。目标芯片就是GD32MCU,当然肯定也兼容STM32F1系列的所有芯片。 整体的连接情况如下:主机(PC端):多<em>串口</em>烧录上位机软件,从机(GD32MCU,进入system boot),连接线采用USB转<em>串口</em>线。 因为对于MCU的量产烧录,很多厂家都有需求,并且量产脱机烧录或者在线编程器好像都很贵,具体价格没有了解过。所以目前来看,这个多<em>串口</em>软件

MSComm1的 使用例子 ---vb Code

从<em>串口</em>读取数据放置到Sql中,例子:从<em>串口</em>读取数据放置sql中IC卡充值:例子:IC卡充值我对这块不是很熟悉,但是有些例子可以参考一下呀!

CSerialPortV3.0.0串口最新修正版2017-12-16

新增功能 * 支持DLL输出 * 去除QueryKey和Hkey2ComboBox,采用<em>CSerialPort</em>Info::availablePorts()函数代替 * 增加<em>CSerialPort</em>Inf

(MFC)SerialPort实现串口发送16进制数字

很简单实用的16进制<em>串口</em><em>通信</em>demo,还带非常实用的虚拟<em>串口</em>和<em>串口</em>监视工具

VS2017-MFC串口通信(基于CSerialPort)

基于VS2017的MFC<em>串口</em><em>通信</em>程序,是基于<em>CSerialPort</em><em>类</em>编<em>写</em>的,亲测32位和64位均可用。

CSerialPort下载

<em>串口</em><em>通信</em><em>类</em>,C++语言编<em>写</em>。十分好用。将<em>类</em>和头文件直接引入即可。 相关下载链接://download.csdn.net/download/wyzhangfeng/3169092?utm_source=

MFC之CSerialPort串口发送接收

MFC之<em>CSerialPort</em><em>类</em>双<em>串口</em>发送接收http://blog.csdn.net/cracent/article/details/50988742

使用CSerialPort进行串口数据发送和接收问题

请教各位大神,目前本人用<em>CSerialPort</em><em>类</em><em>写</em>了一个<em>串口</em>程序,需要在某个特定的VIEW窗口用<em>串口</em>发送和<em>接收数据</em>,大致流程如下: 在窗口InitialUpdate中使用m_SerialPort.In

CSerialPort,如何知道本次接收完了

Remon Spekreijse 的 <em>CSerialPort</em><em>类</em> 在OnCommunication每次接收一个字符, 我该如何区分收到的字符是本次的还是下次的啊?

halcon/mfc利用serialport制作串口通信对话框

利用serialport制作<em>串口</em><em>通信</em>对话框,接收和发送数据实时显示在编辑框中

【在VS2013中使用 CSerialport发送接收数据问题

用<em>CSerialPort</em><em>类</em>时遇到下位机发送命令后上位机接收不到,但是用<em>串口</em>精灵可以收到,同样的语句在VC6.0中科院接受到。 比如先连接上机器以后,我用<em>串口</em>工具Portmon查看数据 如果用VS201

CSerialPort

一个vc工程,包含《Visual C++_Turbo C<em>串口</em><em>通信</em>编程实践》一书中的<em>CSerialPort</em><em>类</em>。

菜鸟求救命!!用CSerialPort,数据接收问题 modbus规约 OnCommunication(WPARAM ch, LPARAM port)

我在OnCommunication(WPARAM ch, LPARAM port)里接收两种16进制的报文(两种报文长度不一),但不知一个报文什么时候接收结束,并结束能放进数组中,求各位高手指教!!!

CserialPort的简单用法

CserialPort<em>类</em>的用法 打开<em>串口</em>: if (m_Comm.InitPort(this,3,115200,'n',8,1,EV_RXCHAR, 512)) //<em>接收数据</em><em>类</em>型为 //EV_RXCHAR,缓冲区大小为512 { ...

vs2013 cSerialPort 异步串口连续收发

vs2013 cSerialPort<em>类</em> 异步<em>串口</em>连续收发

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

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

VS下用C++开发使用SerialPort组件

之前用MSComm这个控件,但是现在<em>写</em>64位的程序,这个控件用不了了。看很多人说可以用SerialPort组件,但是这个东西怎么加载到工程里面啊?我看工具箱设置里可以选择,但是钩上了也不知道怎么用,好

VS2010下MFC CSerialport接收问题

在VS2010的MFC下,用<em>CSerialPort</em><em>类</em>时遇到下位机发送命令后上位机接收不到(下位机发BBBB),但是用<em>串口</em>精灵可以收到,我采用的是龚建伟老师介绍的加消息响应方法接收,是收到一次处理一次,不知道为什么会这样,怎么解决?网上有说是存到缓存从缓存处理,窝子安在这种情况怎么更改呢?希望有系统的解决思路或方法,非常感谢!

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

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

串口通信程序中十六进制格式发送和接收实现

刚刚用MFC编<em>写</em>了一个采集和设定中央空调控制板上参数的应用程序,控制板和PC机之间通过485转<em>串口</em>和<em>串口</em>转USB电路实现<em>通信</em>。程序设计中碰到一个<em>问题</em>是PC端对发送和<em>接收数据</em>格式的处理,控制板可以读懂的协议是一组16进制数,如“66 03 0C 00 01 00 01 00 00 00 00 00 3C 00 3E F5 94”,PC端应用程序可以解析的也是由控制板发送的一组16进制数,而<em>串口</em><em>通信</em>是

急求!c++关于16进制的串口发送问题

小弟在某宝买了数字舵机及其控制板,利用usb转ttl<em>串口</em>控制,根据卖家提供的协议小弟在vs2010编<em>写</em>了一个简单的c++的16进制<em>串口</em>发送程序如下。 #include #incl

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

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

CSerialPort

<em>CSerialPort</em><em>类</em> 优化好用 下载方便

CSerialPort VS2015 unicode可用

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

用CSerialport怎么将十进制整数按照16进制格式发出去?

CSertial <em>类</em>用的是Remon Spekreijse<em>写</em>的<em>串口</em><em>类</em>. 自己重<em>写</em>了一个WriteToPort(char* string)函数,调试的时候发现这个已经传进去了,可是发送出去的值十六进制显

MFC串口通信发送16进制数据

MFC<em>串口</em><em>通信</em>会使用m_mscomm控件。发送数据一般是在edit control 里输入自己想发送的内容,然后点击send button。如果直接发送字符串内容,通过下面代码(send button内<em>写</em>入)即可: UpdateData(true); //读取编辑框内容 m_mscomm.put_Output(COleVariant(m_EditSend)); m_E...

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

使用CserialPort<em>类</em>出现的一些<em>问题</em>的解决: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操作

各位大侠,我想请教一个<em>问题</em>,我现在使用CserialPort<em>类</em>进行<em>串口</em><em>通信</em>,现在找到了一个实例,我想询问一下读<em>写</em>操作,对于下面程序代码,我发送数据的时候可以直接用char sBuf = "This

CSerialPort问题

龚老师<em>写</em>的<em>CSerialPort</em><em>类</em>,发现有个小<em>问题</em>,本人弄了几天没解决,求大家帮助,要看源码的话,可以下载<em>串口</em>调试助手v2.2或v2.3 源码,网上都多着. <em>问题</em>:循环自动发送,内容可以随意,为了看出

如何让程序等待cserialport接受所有数据

我操作的仪器返回值中有"OK"作为结束标志,并且需要好几秒才能返回所有数据。所以我在程序运行过程中必须等待oncomm函数接受数据,并且判断收到"OK"才能继续向下运行程序。我<em>写</em>了个判断的函数,可是总

解决CSerialPort串口通讯单字符接收的问题

http://chaochaoblog.com/archives/3500 在我<em>写</em>SerialServer即<em>串口</em>转网口程序的时候,<em>串口</em>通讯的<em>类</em>是从网上Download的一个CSerailPort<em>类</em>,这是个老外在1997年<em>写</em>的一个<em>类</em>,当然在2012年有人修改过了,处理过一些bug。但是比较困扰我的是,它接收到数据是一个char(一个字节)读取的,这导致我<em>写</em>的日志里面都是这个样子的: a b c d ...

CSerialPort串口最新修正版(解决关闭死锁问题)2014-01-11

<em>CSerialPort</em><em>串口</em><em>类</em>最初由Remon编<em>写</em>,是一份优秀的<em>类</em>文件,好多的地方值得我们学习,具体在多线程,事件,自定义消息,<em>类</em>的封装方面等等。由于已经运行十几年了,原文的问答部分列出来这么多年来的<em>问题</em>,经过网友们的总结,补充和修改原来代码后,整理出一份相对比较完美的代码。 本文还附带一份小项目的源代码,它超越了<em>串口</em>助手,给人一种耳目一新的感觉。你可以直接改造它用到你的项目中!这份工程源代码非常珍贵,剖析它,能学会不少知识,欢迎收藏!

有人使用过CSerialPort这个串口通信吗?交流一下。

这个<em>类</em>是我从CodeProject上下载的,但是我在使用中碰到一点<em>问题</em>,请教大家一下。 由于我使用的硬件要求在发送数据前需要先将RTS设置为0,发送完毕后将RTS设置为1 因此我如下使用: m_Ser

CSerialPort 通信问题

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

程序运行结束后总是显示:Run-Time Check Failure #2

# 程序运行结束后总是显示:Run-Time Check Failure #2 - Stack around the variable 'cmd_value' was corrupted. 程序过程运行正确,调试发现程序运行结束之后就会报告这个错误。 而且**只有d的数值在0到1(不包括1)**才会发生这样的错误。 我的编程环境是vs2010. double d=0; BYTE cmd_star[]="$"; BYTE cmd_cmd[]="001"; BYTE cmd_mid[]=","; char cmd_value[7]; _gcvt_s(cmd_value,sizeof(cmd_value),d,5); BYTE cmd_end[]="#"; BYTE cmd2[13]; memcpy(cmd2,cmd_star,sizeof(char)); memcpy(cmd2+1,cmd_cmd,3*sizeof(char)); memcpy(cmd2+4,cmd_mid,sizeof(char)); memcpy(cmd2+5,cmd_value,6*sizeof(char)); memcpy(cmd2+11,cmd_end,sizeof(char)); CWnd * pMain=(CWnd*)AfxGetMainWnd(); Eol.hEvent=CreateEvent(NULL, TRUE, // manual-reset event FALSE, // not signaled NULL); if(!::SetCommState(hComFile,&m_BCD)) { //AfxMessageBox("SetCommState() error!"); errmsg = "<em>串口</em>设置失败!"; p = (LPSTR)(LPCTSTR)errmsg; ::SendMessage(pMain->m_hWnd,UM_ERRORMSG,0,(LPARAM)p); return ; } ::EscapeCommFunction(hComFile,SETDTR); if(WriteData(cmd2,13)!=13) { //AfxMessageBox("Write com error!"); errmsg = "<em>串口</em><em>写</em>入失败!"; p = (LPSTR)(LPCTSTR)errmsg; ::SendMessage(pMain->m_hWnd,UM_ERRORMSG,0,(LPARAM)p); return; } if (Eol.hEvent!=NULL) { ResetEvent(Eol.hEvent); } CloseHandle(Eol.hEvent);

win32 ClearCommError 和 COMSTAT 结构体

网址: https://msdn.microsoft.com/en-us/library/windows/desktop/aa363180 获取 <em>通信</em>错误的信息,汇报当前的<em>通信</em>设备的状态。 当一个<em>通信</em>错误发生的时候,调用这个函数,将会清除设备的错误标志,来使能其他的输入输出操作 BOOL WINAPI ClearCommError( _In_ HANDLE hFil...

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

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

mfc中用CSerialport串口通信接收float型数据

我用Remon Spekreijse<em>写</em>的一个<em>串口</em><em>类</em>CSerialport<em>类</em>(很常用的那种)做<em>串口</em><em>通信</em>,貌似每次只能接收一个字节,那我怎么接收下面的数据,然后把每个数据对应显示到编辑框中呢?有没有会的大

CSerialPort最新串口下载

c++对<em>串口</em>的封装异步通讯方式,调用<em>串口</em>不错的封装<em>类</em>。 相关下载链接://download.csdn.net/download/liaoyong2/10313351?utm_source=bbsseo

Cserialport

这是一个<em>CSerialPort</em><em>类</em>的具体应用例子,适合VC中做<em>串口</em><em>通信</em>

CSerialPort,如何启动一线程循环调用writetoport()方法

<em>写</em>的程序中用到了<em>CSerialPort</em><em>类</em>来实现<em>串口</em>数据的读<em>写</em>。现打算实现这样一个功能:上位机循环不断的发指令到下位机(上下位机通过无线数传电台连到<em>串口</em>进行<em>通信</em>),下位机收到后返回应答,上位机收到应答

CSerialPort对收到的数据分别处理问题

目前学习使用<em>CSerialPort</em>进行<em>通信</em>。根据发送后收的数据分别处理,比如说我发送1后,收到响应2,根据接收到数据2做处理。当我发送3后,收到响应4,则根据接收到数据4做处理。其中这两次是不同的动作

CserialPort问题,急!

我菜鸟刚接触VC++,所以<em>问题</em>比较简单,大家别笑我,也别打击我。 我用CserialPort<em>类</em>与OMRON PLC 通讯,通讯协议是“@xxxxxxhh*+回车”,其中hh是前面所有字符的异或,我想实

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

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

Mscomm和CSerialPort问题

void SendToCom(USHORT WrAddr,INT WrData) { BYTE send_pkt = {0xEB,0x91,0x00,0x00,0x00,0x00,0x00,0x00

CSerialPort读取消息,读不到,请大家来看看

//定义发送单个字符的空间大小 char *buffA = new char; char *buffB = new char; char *buffC = new char; char *buffD

CSerialPort的WriteToPort

初次使用 remon Spekreijse的<em>CSerialPort</em> <em>类</em>。 连续几次使用WriteToPort的时候总是只有最后一次的发送出去。。。 不知道什么原因。有用过的请指点一下。谢谢

最新版的CSerialPort 程序

最新版的 <em>CSerialPort</em> <em>串口</em>程序可以集成开发。修改了很多bug。非常不错!!

CSerialPort V1.34

A set of C++ classes for Win32 serial ports。 Copyright (c) 1996 - 2018 by PJ Naughter (Web: www.naug

CSerialPort不能连续发送的问题

1.void <em>CSerialPort</em>::WriteChar(<em>CSerialPort</em>* port) { BOOL bWrite = TRUE; BOOL bResult = TRUE; DWORD BytesSent = 0; ResetEvent(port->m_hWriteEvent); // Gain ownership of the critical s

CSerialPort-master

在VS2015中搭建一个<em>串口</em><em>通信</em>助手,主要实现PC机与外接设备的<em>串口</em><em>通信</em>

MFC中使用的CSerialPort

MFC中使用<em>串口</em><em>通信</em>所包含<em>类</em>,实现收发数据,直接包含,打按照函数打开<em>串口</em>,接收,发送就好了。

CSerialPort使用示例

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

CSerialPort 使用问题

编程环境为VC2010/VC2015 MFC(用100 140 140xp编译器均试过),在<em>写</em><em>串口</em>指令后,有时会被无限个数的读请求锁死CommThread线程,也就是无时无刻的在执行ReceiveChar函数,从而无法响应其他事件而一直在处理读请求。以排除计算机的<em>问题</em>和<em>串口</em>芯片与连接线的<em>问题</em>。跟踪ReceiveChar发现读到的数据长度均为0,是无效的。值得注意的是OVERLAPPED结构体中的internal此时为一个非常奇怪的数值3221225485,在网页或者MSDN上均无法搜到这个值的意义,请高手帮忙分析下。 在此网站上已有人提出过<em>类</em>似的<em>问题</em>,但是并没有人给出一个有效的回答: http://bbs.csdn.net/topics/391070927 调试结果图如下: 另:这个<em>串口</em><em>类</em>在网上流传的十分广泛,我本人也使用过3,4年了从来没发生过这种现象。![![图片说明](https://img-ask.csdn.net/upload/201511/10/1447118255_130338.png)![图片说明](https://img-ask.csdn.net/upload/201511/10/1447118372_99747.png) 再次强调,如果怀疑这个<em>串口</em><em>类</em>本身有<em>问题</em>,请先自行看下代码,此<em>类</em>存在至少10年了,并且被广泛使用,我不能100%的说我的硬件没<em>问题</em>,但我觉得99%的可能性<em>问题</em>不在硬件上。<em>类</em>源码地址: 原始:http://codeguru.earthweb.com/network/serialport.shtml 较新:https://github.com/liquanhai/<em>CSerialPort</em>

CSerialPort不能连续发送数据

<em>问题</em>描述: 工具VS2008 <em>CSerialPort</em><em>类</em> 当使用USB转232线连接两台Win7电脑时,只能发送一条指令, 然后一直等待接收,当接收到字符时,又可以发送一条指令。不使用转接线时可连续发送多条指令,收发 正常,已排除USB转接线及其驱动的<em>问题</em>。

上位机简单串口,VC串口, MFC串口

我是在一家做硬件的的公司里面做软件开发工程师的,我做的软件大多是是编<em>写</em>软件通过<em>串口</em>去控制硬件,所以<em>串口</em>编程对于我来说是很重要的。<em>串口</em>编程之前一直使用的是自己<em>写</em>的简单<em>串口</em>(只有发送,没有接收)<em>类</em>,或者上网下的<em>CSerialPort</em><em>类</em>(个人觉得不好用啊,互锁变量一堆,代码一开始还让人看不懂,对于上位机使用不合适)。对于我做的上位机软件,其实使用<em>串口</em>只是需要顺序发送,<em>接收数据</em>无误就行了,不需要考虑太多东...

串口通信助手(龚建伟版使用cserialport)

为什么另一个<em>串口</em>发送汉字时,比如:发送"你好"情况是这样的:ch=196 str=? ![图片](https://img-ask.csdn.net/upload/201605/10/1462860821_691963.jpg)![图片](https://img-ask.csdn.net/upload/201605/10/1462861037_93158.jpg)![图片](https://img-ask.csdn.net/upload/201605/10/1462861047_654660.jpg)![图片](https://img-ask.csdn.net/upload/201605/10/1462861055_323741.jpg)

CSerialPort串口初始化Initport()总是失败

代码如下 serialport.InitPort(this,1,9600,0,8,1,EV_RXFLAG | EV_RXCHAR,512) 不知为什么总是失败,是不是有什么服务没有打开,请高手帮助!

CSerialPort能否连续发送?发送数据丢失?

我给一个机器发送<em>串口</em>命令,单个命令发送没<em>问题</em>, 连续发送的时候有<em>问题</em>, 比如,连续发了三个,如下: m_ser.WriteToPort(chSend1); m_ser.WriteToPort(chSe

如何让CSerialPort这个串口支持com1-com4以外的串口(如com5)

按龚建伟的方法编<em>串口</em>通讯,可是只支持com1-com4,我是新手,不怎么会改。看他的介绍,应该是需要修改<em>CSerialPort</em>里的InitPort函数。谁知道怎么改啊?谢谢。(我自己只找到一处应该修改

CSerialPort,EV_RXFLAG问题

使用<em>CSerialPort</em><em>类</em>,从<em>串口</em>收发数据 我想在一条消息帧接收完毕后,收到一个系统消息,所以我使能了这个<em>类</em>中定义的WM_COMM_RXFLAG_DETECTED这个消息,在这个<em>类</em>中,有这一段代码:

Remon Spekreijse编的串口Cserialport的多串口使用问题

想不只使用4个<em>串口</em>,于是 直接在他的初始化函数当中更改如下 assert(portnr > 0 && portnr < 5); -》 assert(portnr > 0 && portnr < 9);

CSerialPort串口最新修正版(解决关闭死锁问题)2011-11-06

本文分享给大家的是<em>CSerialPort</em><em>串口</em><em>类</em>最新修正版(2011-11-06),一个<em>串口</em>控件能屹立14年不倒唯有<em>CSerialPort</em><em>类</em>。 Remon提供的<em>串口</em><em>类</em>原帖网址为:http://codeg

CSerialPort串口初始化Initport()出错

m_SerialPort.InitPort(this,nPort,9600,"N",8,1,EV_RXFLAG|EV_RXCHAR,512)连接时提示: error C2664: 'InitPort'

CSerialPort的应用问题

我想用<em>CSerialPort</em><em>类</em>来实现工业控制,我想把它做成一个基于单文档的程序,但是由于对VC++不是很熟悉,所以在这里请教下大侠们,我到底该怎么去实现呢!我知道怎么添加到单文档,就是不明白我要做的事

关于CSerialPort多线程多串口问题!!!

我想用<em>CSerialPort</em>来创建多个对象,也就是多个<em>串口</em>,结果跟悲催的发现,开不了,assert (portnr>0 && portnr<50); 按理论来说应该是可以的啊,但是实践中就是不行啊,望

串口通信中关于CSerialPort中的RecvData()如何使用?

1、<em>串口</em><em>通信</em>中<em>CSerialPort</em><em>类</em>中的BOOL <em>CSerialPort</em>::RecvData(LPTSTR lpszData, const int nSize)如何使用??最好有相关例子可以参考参考

关于用CSerialPort实现串口通信问题

在连续两次调用<em>类</em>中的WriteToPort函数<em>写</em><em>串口</em>时 第一次调用完WriteToPort之后,外设返回数据, 第二次调用之前需要根据返回的数据来确定WriteToPort函数发送什么数据。 我是这样

VC++串口通信问题,关于CSerialport的

使用CSerialport<em>接收数据</em>时都是一个个接收的,那样在高速率大数据下可能就会产生丢数据<em>问题</em>,现在想在接收到收到特定格式的数据后在发送WM_COMM_RXCHAR消息,该怎样处理,如我要接收到这样

CSerialPort 接收时丢失数据!

哪位大神对 <em>CSerialPort</em> (作者是Remon Spekreijse)这个<em>类</em>比较熟?最近发现使用USB转RS-232连PC时,使用<em>CSerialPort</em>接收时会发生丢数据的情况,丢失率1.3%

【关于CSerialPort串口不能连续发送数据,大家有什么好的解决办法???】

如下:连续发送6次或者几次,都只能接受最前面和最后面的,如果没用延时就只能接收到最后面的疏浚。 我用<em>串口</em>监视工具查看的是直发送了最前面和最后面的数据,中间的数据都没用发送。 CString temps

API串口编程CSerialPort为什么发送一个后就锁死在读的事件上了?

这个函数在等三个事件:关线程,IO口状态(读事件 EX_CHAR),发送事件(排名分优先级) 点发送按键就会激活发送事件(Event=2)然后进入到相应的case进行发送,但是发送完成后再次到这个等

关于CSerialPort,多次调用initPort()函数后出现错误

先说下具体情况,打开<em>串口</em> -- 发送数据 -- 关闭<em>串口</em> -- 打开<em>串口</em>出错,错误代码就是调用initPort函数 错误提示CRT detected that the application wrot

C++6.0中profile的配置使用下载

C++6.0中profile选项为灰色的解决办法,及profile的使用 相关下载链接:[url=//download.csdn.net/download/zhxy1992/3715773?utm_source=bbsseo]//download.csdn.net/download/zhxy1992/3715773?utm_source=bbsseo[/url]

51单片机应用系统开发典型实例(PDF)下载

51单片机应用系统开发典型实例。找遍了网上只在CSDN找到了,但是是PDG的,下了还是打不开的。我在网上找阿找,找了几天,终于找到了方法打开,转了PDF的放上分享!! 相关下载链接:[url=//download.csdn.net/download/chwnin/1324343?utm_source=bbsseo]//download.csdn.net/download/chwnin/1324343?utm_source=bbsseo[/url]

A Novel Approach of Face Detection Based on Skin Color Segmentation and PCA下载

“主分量法”是由霍特林(Hotelling)提出的,这是一个可以去掉随机变量中各元素之间相关性的线性变换。此后,卡胡南(Karhunen)和列夫(Loeve)提出了一种针对连续信号的类似的变换。由这种方法又派生出了一种离散图像变换的方法。 相关下载链接:[url=//download.csdn.net/download/limengjie0505/2316752?utm_source=bbsseo]//download.csdn.net/download/limengjie0505/2316752?utm_source=bbsseo[/url]

我们是很有底线的