龚建伟老师编写的串口类CSerialPort问题--测试发现串口总是关闭不掉 [问题点数:20分,结帖人zhou_cocoo]

一键查看最优答案

确认一键查看最优答案?
本功能为VIP专享,开通VIP获取答案速率将提升10倍哦!
Bbs1
本版专家分:5
结帖率 50%
Bbs3
本版专家分:809
版主
串口通信--CSerialport

VS2013下使用<em>CSerialPort</em><em>类</em>进行<em>串口</em>通信

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串口

转载自: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(已优化)做的串口通信例子源码Dialog

用CserialPort<em>类</em>做的<em>串口</em>,基于Dialog

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

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

通讯技术

<em>串口</em>通讯基础 <em>串口</em>基本接线方法 (作者:<em>龚建伟</em> 2001.6.24)本文介绍了<em>串口</em>常用接线方法及注意事项 有关RS232与RS485接口的问答 (来自中国工控网) RS232与RS485接口的区别及各自特点以及在使用中应注意事项 接口技术的基本知识 (来自中国工控网) 评论:<em>串口</em>是计算机接口的一种,在编程中了解其它接口是有益的,如在使用中断时,你就要知道其它接口用了哪些中断。 串...

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

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

CSerialPort来写的串口通信,接收数据有问题

发送的字节数 6506,为什么只收到字节数只有4121? <em>问题</em>点1:就是收不完数据就停止了, <em>问题</em>点2:接收显示的速度太慢?接收4121个字节需要快50秒。但是我给<em>串口</em>调试助手同样的数据,它不用3秒就

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>文件,好多的地方值得我们学习,具体在多线程,事件,自定义消息,...

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

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

调用SetEvent(m_hShutdownEvent)设置事件对象的状态后,调用WaitForSingleObject.返回结果不确定的问题.

//先给出主要的代码.请您重点看标红的部分. /* CScanPath.h */ #include class CScanPath { public: HRESULT Stop

CSerialPort,彻底关闭串口

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

解决了关闭串口时死锁的CSerialPort

该文章转载自:http://blog.csdn.NET/itas109 与2016-12-20日在其基础上修改了其中关<em>串口</em>卡死现象,添加十六进制与ASCII之间互转函数,觉得蛮好用的推荐给大家 如需转

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

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

【关于龚建伟写的串口通信例子一点问题???】

如图所示: //<em>串口</em>响应函数 LONG <em>CSerialPort</em>TestDlg::OnComm(WPARAM ch, LPARAM port) { m_strEditReceiveMsg += ch;

CSerialPort下载

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

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

利用serialport制作<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>CSerialPort</em><em>类</em>。

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

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

串口通信助手(龚建伟版使用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)

VS2010下MFC CSerialport接收问题

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

龚建伟串口通讯编程实践

求 <em>龚建伟</em><em>串口</em>通讯编程实践源代码 有的朋友发到我邮箱934734414@qq.com 谢谢!

使用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>是否有设备连接,并且能自动检测到设备的速率,我想从最小波特率开始发送AT指令,如果能接收到OK,那波特率就是正确的.我现在使用的<em>CSerialPort</em><em>类</em>,但是不知道怎么

CserialPort读写操作

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

CSerialPort-master

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

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

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

求助关于VS2017中添加MFC问题

各位大佬,我在VS2017中点菜单栏的项目于 然后添加<em>类</em>,怎么不出来vs2010中那个先选择模板然后选择基<em>类</em>的向导?比如我想添加CAsyncSocket这个基<em>类</em>,2017里面只能自己手打<em>类</em>名和基<em>类</em>,输

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

本文转载连接:https://blog.csdn.net/humanking7/article/details/48110543 原创文章,欢迎转载。转载请注明:转载自 祥的博客 原文链接:http://blog.csdn.net/humanking7/article/details/48110543 最近要写一个<em>串口</em>程序,用MFC自带COM组件的效果很差(一次接收一个缓冲区的数据,...

CserialPort的简单用法

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

CSerialPort VS2015 unicode可用

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

CSerialPort问题

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

无人驾驶车辆模型预测控制 龚建伟pdf

无人车辆轨迹跟踪入门必备 本书主要介绍模型预测控制理论与方法在无人驾驶车辆路径规划与跟踪控制方面的基础应用技术。由于模型预测控制理论数学抽象特点明显,初涉者往往需要较长时间的探索才能真正理解和掌握,进

无人驾驶车辆模型预测控制by龚建伟.pdf.zip

比一般的书籍要高清很多 作者:<em>龚建伟</em> 姜岩 徐威 讲述无人驾驶领域的模型预测及控制的书籍,希望能帮助到大家学习无人驾驶的相关知识。

串口调试精灵 龚建伟

工程师们在开发<em>串口</em>通讯软件,或开发硬件通讯设备过程中,常常需要一个<em>串口</em>调试工具对数据流进行显示,分析,<em>测试</em>,以检测设备通讯的有效通讯情况。<em>串口</em>监控器是一个满足这样<em>测试</em>过程的<em>串口</em>通讯软件,它能够多种方式

龚建伟串口通讯电子书(清晰版)

<em>龚建伟</em><em>串口</em>通讯电子书(清晰版),还是不错的~

请高手帮忙回答,在龚建伟老师串口调试中遇到了Serial串口问题

![图片说明](https://img-ask.csdn.net/upload/201504/20/1429520800_230930.jpg) 点击打开<em>串口</em>按钮时,就会弹出以上图片的错误,![图片说明](https://img-ask.csdn.net/upload/201504/20/1429521315_903749.jpg) 代码如下 // SerialPortTestDlg.h : header file // #include"SerialPort.h" #if !defined(AFX_SERIALPORTTESTDLG_H__37F6643D_1905_4655_883E_24AD7F141ED0__INCLUDED_) #define AFX_SERIALPORTTESTDLG_H__37F6643D_1905_4655_883E_24AD7F141ED0__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 ///////////////////////////////////////////////////////////////////////////// // <em>CSerialPort</em>TestDlg dialog class <em>CSerialPort</em>TestDlg : public CDialog { // Construction public: <em>CSerialPort</em>TestDlg(CWnd* pParent = NULL); // standard constructor <em>CSerialPort</em> m_SerialPort; //CSerailPort<em>类</em>对象 BOOL m_bSerialPortOpened; //标志<em>串口</em>是否打开 // Dialog Data //{{AFX_DATA(<em>CSerialPort</em>TestDlg) enum { IDD = IDD_SERIALPORTTEST_DIALOG }; CComboBox m_ctrlComboComPort; CString m_strEditReceiveMsg; CString m_strEditSendMsg; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(<em>CSerialPort</em>TestDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: HICON m_hIcon; // Generated message map functions //{{AFX_MSG(<em>CSerialPort</em>TestDlg) virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg LONG OnComm(WPARAM ch, LPARAM port); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnButtonOpen(); afx_msg void OnButtonClose(); afx_msg void OnButtonSend(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_SERIALPORTTESTDLG_H__37F6643D_1905_4655_883E_24AD7F141ED0__INCLUDED_) // SerialPortTestDlg.cpp : implementation file // #include "stdafx.h" #include "SerialPortTest.h" #include "SerialPortTestDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // <em>CSerialPort</em>TestDlg dialog <em>CSerialPort</em>TestDlg::<em>CSerialPort</em>TestDlg(CWnd* pParent /*=NULL*/) : CDialog(<em>CSerialPort</em>TestDlg::IDD, pParent) { //{{AFX_DATA_INIT(<em>CSerialPort</em>TestDlg) m_strEditReceiveMsg = _T(""); m_strEditSendMsg = _T(""); //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_bSerialPortOpened=FALSE; //初始状态:<em>串口</em>没有打开 } void <em>CSerialPort</em>TestDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(<em>CSerialPort</em>TestDlg) DDX_Control(pDX, IDC_COMBO_COMPORT, m_ctrlComboComPort); DDX_Text(pDX, IDC_EDIT_RECEIVEMSG, m_strEditReceiveMsg); DDX_Text(pDX, IDC_EDIT_SENDMSG, m_strEditSendMsg); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(<em>CSerialPort</em>TestDlg, CDialog) //{{AFX_MSG_MAP(<em>CSerialPort</em>TestDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON_OPEN, OnButtonOpen) ON_BN_CLICKED(IDC_BUTTON_CLOSE, OnButtonClose) ON_MESSAGE(WM_COMM_RXCHAR, OnComm) ON_BN_CLICKED(IDC_BUTTON_SEND, OnButtonSend) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // <em>CSerialPort</em>TestDlg message handlers BOOL <em>CSerialPort</em>TestDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here m_ctrlComboComPort.SetCurSel(0); //初始选择<em>串口</em>1 //以下两句分别设置“打开<em>串口</em>”、“<em>关闭</em><em>串口</em>”两个按状态的使能状态 GetDlgItem(IDC_BUTTON_OPEN)->EnableWindow(!m_bSerialPortOpened); GetDlgItem(IDC_BUTTON_CLOSE)->EnableWindow(m_bSerialPortOpened); return TRUE; // return TRUE unless you set the focus to a control } void <em>CSerialPort</em>TestDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void <em>CSerialPort</em>TestDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR <em>CSerialPort</em>TestDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } LONG <em>CSerialPort</em>TestDlg::OnComm(WPARAM ch, LPARAM port) { m_strEditReceiveMsg += ch; UpdateData(FALSE); //将接收到的字符显示在接收编辑框中 return 0; } void <em>CSerialPort</em>TestDlg::OnButtonOpen() { // TODO: Add your control notification handler code here int nPort=m_ctrlComboComPort.GetCurSel()+1; //得到<em>串口</em>号,想想为什么要加1 if(m_SerialPort.InitPort(this, nPort, 9600,'N',8,1,EV_RXFLAG | EV_RXCHAR,512)) { m_SerialPort.StartMonitoring(); m_bSerialPortOpened=TRUE; } else { AfxMessageBox("没有<em>发现</em>此<em>串口</em>或被占用"); m_bSerialPortOpened=FALSE; } GetDlgItem(IDC_BUTTON_OPEN)->EnableWindow(!m_bSerialPortOpened); GetDlgItem(IDC_BUTTON_CLOSE)->EnableWindow(m_bSerialPortOpened); } void <em>CSerialPort</em>TestDlg::OnButtonClose() { // TODO: Add your control notification handler code here m_SerialPort.ClosePort();//<em>关闭</em><em>串口</em> m_bSerialPortOpened=FALSE; GetDlgItem(IDC_BUTTON_OPEN)->EnableWindow(!m_bSerialPortOpened); GetDlgItem(IDC_BUTTON_CLOSE)->EnableWindow(m_bSerialPortOpened); } void <em>CSerialPort</em>TestDlg::OnButtonSend() { // TODO: Add your control notification handler code here if(!m_bSerialPortOpened) return; //检查<em>串口</em>是否打开 UpdateData(TRUE); //读入编辑框中的数据 m_SerialPort.WriteToPort((LPCTSTR)m_strEditSendMsg);//发送数据 }

龚建伟的VC++/TC串口通信编程源码

<em>龚建伟</em>的VC++/TC<em>串口</em>通信编程一书的源代码

龚建伟vc串口通信一书源代码

<em>龚建伟</em>《Visual C++/Turbo C<em>串口</em>通信编程实践》一书源代码、是学习<em>串口</em>通信不可多得的好书、对于pc与单片机<em>串口</em>通信有很好的借鉴作用.

串口通信实例

<em>串口</em>通信 <em>串口</em>通信协议 所谓通信协议是指通信双方的一种约定。约定对数据格式、同步方式、传送速度、传送步骤、纠错方式以及控制字符定义等<em>问题</em>做出统一规定,通信双方必须共同遵守。 对于一个设备来说,要接收和发送串行通信的数据,需要一个器件将串行的数据转换为并行的数据以便于处理器进行处理,这个器件就是UART(Universal Asynchronous Receiver/Tra

串口通信】之案例参考

查阅网上资料借鉴了两篇博文其一点击打开链接其二点击打开链接总结有两点:SerialTool.java<em>串口</em>服务<em>类</em>,功能有查找所有可用端口,打开<em>串口</em>,<em>关闭</em><em>串口</em>,读取<em>串口</em>数据(将接收到的数据根据需求解析),向<em>串口</em>发送数据,添加监听器。package serialPort; import java.io.IOException; import java.io.InputStream; import ja...

龚建伟串口代码

<em>龚建伟</em><em>编写</em>的VC++<em>串口</em>代码书上的所有代码

串口调试助手(仿龚建伟版)

防止版<em>龚建伟</em>博士的<em>串口</em>调试助手。挺好用的!无毒

使用CSerialPort编写串口通信程序的问题

转自:http://blog.chinaunix.net/uid-24517893-id-3032734.html <em>CSerialPort</em>是一个很好的<em>串口</em>通讯<em>类</em>,但它没有<em>关闭</em><em>串口</em>的方法,如果对这个<em>类</em>的实现原理不了解,自行<em>编写</em><em>串口</em><em>关闭</em>方法可能会带来如下<em>问题</em>:     1、用closehandle方法<em>关闭</em><em>串口</em>:由于调用<em>类</em>方法StartMonitoring后会生成一个<em>串口</em>通信线程

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

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

CSerialPort 通信问题

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

【关于串口通信CSerialPortBUG问题??????】

承接我上一个还没解决的XP下蓝屏的<em>问题</em>; 首先我用的是<em>CSerialPort</em><em>类</em> 我<em>测试</em>每次传输数据过快就会蓝屏 在波特率为2400——57600时传输数据达到500次每秒 XP系统下绝对会蓝屏 1、定

龚建伟串口调试助手 源代码

很好用<em>串口</em>调试助手 及源代码 详细 经典

串口通讯技术

串行通讯/并口/USB说明:本栏凡是未注明编程语言的,均为VC或者Turbo C本专栏分为五部分:<em>串口</em>通迅基础、WINDOWS<em>串口</em>编程相关文选、DOS<em>串口</em>编程相关文选、WIN<em>串口</em>源代码、DOS<em>串口</em>源代码  <em>串口</em>通讯基础<em>串口</em>基本接线方法 (作者:<em>龚建伟</em> 2001.6.24)本文介绍了<em>串口</em>常用接线方法及注意事项 加入时间:2001.6.25 有关RS232与RS485接口的问答 (来自中国工控网)

串口调试助手接收数据问题

在<em>串口</em>调试助手中以十六进制发送十六进制显示,当发送 AA BB 00 01时得到的数据是AA BB,是什么原因,请教各位大侠们!!

谁看过龚建伟写的《串口调试助手V1_0源程序详细编程过程》没有?我发现程序有点问题

我用作者的程序想接收手写板从<em>串口</em>发来的数据 结果反应都没有,oncomm事件根本就不触发。 但用作者写的<em>串口</em>调试助手2.2却可以正常接收 不知道这个是什么原因?

串口调试助手源程序(一)转

http://www.gjwtech.com  作者<em>龚建伟</em> 在众多网友的支持下,<em>串口</em>调试助手从2001年5月21日发布至今,短短一个月,在全国各地累计下载量近5000人次,在近200多个电子邮件中,20多人提供了使用<em>测试</em>意见,更有50多位朋友提出要<em>串口</em>调试助手的源代码,为了答谢谢朋友们的支持,公开推出我最初用VC控件MSComm<em>编写</em><em>串口</em>通信程序的源代码,并写出详细的编程过程,姑且叫<em>串口</em>调试助手源

串口调试助手V2.3最新版本

<em>串口</em>调试助手, <em>龚建伟</em>大作,亲测可用。

VC++ 串口调试助手源代码

此程序利用MFC技术结合MSComm控件,使用C++语言<em>编写</em>。程序功能包括:手动设置<em>串口</em>参数,串行接收和发送数据,可以显示接收数据和保存接收数据等功能。此程序可以作为单片机与微机<em>串口</em>通信时的调试工具。

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

# 程序运行结束后<em>总是</em>显示:Run-Time Check Failure #2 - Stack around the variable 'cmd_value' was corrupted. 程序过程运行正确,调试<em>发现</em>程序运行结束之后就会报告这个错误。 而且**只有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>写入失败!"; 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 获取 通信错误的信息,汇报当前的通信设备的状态。 当一个通信错误发生的时候,调用这个函数,将会清除设备的错误标志,来使能其他的输入输出操作 BOOL WINAPI ClearCommError( _In_ HANDLE hFil...

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

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

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

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

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

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

#CserialPort串口发送只能发送一次的问题

1、现象。 最近在做一个上位机与下位机的<em>串口</em>通信程序,使用的是MFC下调用CserialPort<em>类</em>的方法。上位机和下位机的程序<em>编写</em>好后,在调试过程中<em>发现</em>一个<em>问题</em>:<em>串口</em>连接后,点击按钮发送数据,第一次发送下位机接收后,第二次发送下位机就没有反应了。2、分析。最初我以为是下位机的接收有<em>问题</em>,于是通过<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>通信

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

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

MFC CserialPort串口通信 多线程

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

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

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

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问题,急!

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

关于串口通信CSerialPortWriteToPort的问题

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

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

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

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

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

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 V1.34

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

Cserialport问题,请指教!

我在vs2005上写了个<em>串口</em>程序,用网上提供的Cserialport<em>类</em>做的,但是<em>发现</em><em>关闭</em>打开使用的<em>串口</em>时closeport()不管用,如果换一个com,原来使用的就被关了。后来试着在vs2003下写就

急:VC 多串口多线程CSerialPort操作串口的开关问题

VC做一个上位机软件,是基于RS485通讯,涉及到5个<em>串口</em>,分别要从5个<em>串口</em>中的下位机中实时采集返回数据,所以采用轮询制从<em>串口</em>1到<em>串口</em>5依次按地址发送命令采集数据,用的是<em>CSerialPort</em><em>类</em>,但是

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

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

VC serialPort加上关闭功能————我的解决方法

VC serialPort<em>类</em>加上<em>关闭</em>功能————我的解决方法2010年10月15日 星期五 10:40<em>CSerialPort</em>是一个很好的<em>串口</em>通讯<em>类</em>,但它没有<em>关闭</em><em>串口</em>的方法,如果对这个<em>类</em>的实现原理不了解,自行<em>编写</em><em>串口</em><em>关闭</em>方法可能会带来如下<em>问题</em>:     1、用closehandle方法<em>关闭</em><em>串口</em>:由于调用<em>类</em>方法StartMonitoring后会生成一个<em>串口</em>通信线程,这个线程中要不停地访问<em>串口</em>,这种方法会带来明显的错误。   2、先用StopMonitoring方法停止<em>串口</em>监听,然后用cl

救命啊!串口通信,使用CSerialPort问题

最近在使用PJ Naughter的<em>CSerialPort</em>做一个<em>串口</em>程序,底层使用三个线程进行异步发送,接收和处理,程序跑起来的的时候会出现丢失数据,而且还有一个非常严重的<em>问题</em>,就是接上设备以后程序无法

多线程串口通信 MFC CSerialPort

写在前面: 晚上应该继续完成未写完的代码,但Chrome上打开的标签实在太多了,约30个了,必须关掉一些,所以需要把自己看的整理一下然后关掉。本次主要写点MFC环境下多线程<em>串口</em>通信相关的东西,这包括线程创建及控制、<em>串口</em>同步异步操作、内存非法访问(或者说是线程同步)、线程通信、Windows消息响应过程等。 遇到<em>问题</em>: 项目中IO传感器通信模块之前...

基于CSerialPort修改串口调试助手编写过程中遇到的问题总结

如需转载请标明出处:http://blog.csdn.net/itas109 本文是对 基于<em>CSerialPort</em>修改<em>类</em>的<em>串口</em>调试助手源代码(支持中文、自动保存等)该文的补充, 其中介绍了<em>编写</em>过程中遇到的<em>问题</em> 1、下拉控件 <em>类</em>型设置为下拉列表,在选择的时候就不可以编辑了 2、_T("打开<em>串口</em>") 3、Control ID可以对应2个不同的Type, 4、MFC

CSerialPort能设置为同步发送吗?

<em>CSerialPort</em>能设置为同步发送吗? 初始化函数如下: BOOL InitPort(CWnd* pPortOwner, UINT portnr = 1, UINT baud = 19200, c

关于CSerialPort的超时处理

我用的<em>龚建伟</em>的<em>CSerialPort</em><em>类</em>做的<em>串口</em>通信程序,想加一个超时处理,就是当发送数据后,在设定的时间内(假设3秒)没有接收到数据,说明超时。这个该如何做啊?请各位帮忙,谢谢

CSerialPort串口问题

<em>CSerialPort</em><em>串口</em><em>类</em>有一个向<em>串口</em>发数据的函数,WritePort。 m_SerialPort.WriteToPort("pppppppppppppppppppppp"); m_SerialPo

串口通信 多线程

用ReadFile()从<em>串口</em>源源不断接收到数据存到一个BYTE buffer里,再从这个buffer逐字节提取进行加减,实时波形显示。 请问 1,需要用多线程实现吗 2,buffer总共只有100个字

mfc多线程异步问题,有似阻塞队列的实现吗?

rt,java中为了快速响应。调度线程将数据写入阻塞队列后直接返回,由工作线程读取阻塞队列完成耗时工作。mfc中有<em>类</em>似的实现么,是否是线程安全的?新人求解?

vs2013串口通信WriteFile阻塞

各位大侠,帮忙看看,我准备用同步的方式进行读写<em>串口</em>,但是现在写<em>串口</em>的时候直接阻塞了 if (m_portName.IsEmpty()) { AfxMessageBox(_T("没有设置<em>串口</em>号"));

CSerialPort串口通信,问题

有发送代码 char s; memset(&s, 0, sizeof(s)); //<em>--</em>清空发送数组缓冲区 s = 0x02; s = 0x00; s = 0x04; s = 0xC1; s = 0x

MFC串口调试助手线程监听事件小解

这里以线程监听<em>串口</em>数据,实现<em>串口</em>数据的自动接收为例进行说明: 首先,线程监听需要一个线程函数:(DWORD WINAPI) UINT  CSerialDAWDlg::ThreadFunc(LPVOID pParam){ COMSTAT ComStat; DWORD dwErrorFlags = 0; DWORD wCount = 0; CString str; while(1){

MFC之CSerialPort串口发送接收

MFC之<em>CSerialPort</em><em>类</em>双<em>串口</em>发送接收 1、 基本框架 添加<em>CSerialPort</em>(.c、.h)文件添加到相应位置。 创建对象和函数 <em>CSerialPort</em> m_SerialPort1, m_SerialPort2; afx_msg LONG CDoublePortDlg::OnComm(WPARAM ch, LPARAM port);//此函数接收到一个字符执行一次 指

基于MFC的串口CSerialPort的使用

VS2010的MFC环境中<em>串口</em><em>CSerialPort</em><em>类</em>的使用说明

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会<em>发现</em>,你的人生很可能是这样的: ...

Libdgx分卷2下载

Libdgx文档+源码+jar包 Libdgx文档+源码+jar包 相关下载链接:[url=//download.csdn.net/download/meichen8050753/3671574?utm_source=bbsseo]//download.csdn.net/download/meichen8050753/3671574?utm_source=bbsseo[/url]

不错网站运行监测工具(无安装)下载

免安装,易操作,占用空间小,反应速度灵敏。 相关下载链接:[url=//download.csdn.net/download/niuqua/4538289?utm_source=bbsseo]//download.csdn.net/download/niuqua/4538289?utm_source=bbsseo[/url]

山东大学操作系统实验7实验8下载

山东大学操作系统实验课实验7&实验8,时间2012年12月 相关下载链接:[url=//download.csdn.net/download/u013112098/6695787?utm_source=bbsseo]//download.csdn.net/download/u013112098/6695787?utm_source=bbsseo[/url]

我们是很有底线的