Visual Studio 2013 串口类

重构串口驱动

前言:

最近调试串口获取机芯日志,要做个上位机工具能随时查看机芯的本地日志。起初想参考合泰源码做一份,但是考虑到通用性。如果未来要做其他项目,又得改串口类的代码,很麻烦。所以想整一份自己的专属串口类,方便后续移植使用。

网上参考了很多资料,基本上都是大同小异。打算自己重构一份,使用双线程,实现读写分离,环形数组收发数据。应用层可以向指定的环形数组,随时随地写入不定长度的数据。或者随时随地从指定的环形数组,读取不定长度的数据。

参考资料如下:

  1. 《MFC图文并茂详解.doc》
  2. 《SCOM_MFC2.rar》
  3. 《serial_src.zip》
  4. 《SerialCom_YiHai_TEST-master.zip》
  5. 《SerialComSoftware_自写详细注释.rar》
  6. 《VC_MFC串口通信编程详解.pdf》
  7. 《VC++串口通信20个经典源码合集.rar》
  8. 《串口通信处女作.zip》
  9. 《用MFC实现串口编程.doc》

关键API接口和结构体描述:

CreateFile 函数打开串口。

HANDLE CreateFile(
 LPCTSTR lpFileName,     // 指向文件名的指针
 DWORD dwDesiredAccess,     // 访问模式(写 / 读)
 DWORD dwShareMode,     // 共享模式
 LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 指向安全属性的指针
 DWORD dwCreationDisposition,   // 如何创建
 DWORD dwFlagsAndAttributes, // 文件属性
 HANDLE hTemplateFile     // 用于复制文件句柄
);
COMMTIMEOUTS  结构体,用来设置串口读写的超时时间

typedef struct _COMMTIMEOUTS {
    DWORD ReadIntervalTimeout; //读---间隔超时  ms  两字符之间的 间隔超时
    DWORD ReadTotalTimeoutMultiplier; //读---时间系数  ms  ReadTotalTimeoutMultiplier * 字节数 = 总超时
    DWORD ReadTotalTimeoutConstant; //读---时间常量  ms  一次读取串口数据的固定超时
    DWORD WriteTotalTimeoutMultiplier; //写---时间系数  ms  WriteTotalTimeoutMultiplier * 字节数 = 总超时
    DWORD WriteTotalTimeoutConstant; //写---时间常量  ms  一次写入串口数据的固定超时
} COMMTIMEOUTS,*LPCOMMTIMEOUTS;
DCB 结构体有28个参数,一般用来配置一些串口的主要参数
(1)DWORD BaudRate;      波特率设置。
(2)BYTE ByteSize;         数据位设置。
(3)DWORD fParity: 1; TRUE时, 支持奇偶检验。
(4)BYTE Parity;         奇偶检验位的设置
(5)BYTE StopBits;        停止位的设置
StopBits指定端口当前使用的停止位数,可取值:
取值             意义
ONESTOPBIT      1停止位
ONE5STOPBITS    1.5停止位
TWOSTOPBITS     2停止位
参考资料: https://blog.csdn.net/weixin_42639646/article/details/120319833
ReadFile 函数从串口读取数据

BOOL ReadFile(
    HANDLE hFile,             //文件的句柄
    LPVOID lpBuffer,           //用于保存读入数据的一个缓冲区
    DWORD nNumberOfBytesToRead,    //要读入的字节数
    LPDWORD lpNumberOfBytesRead,    //指向实际读取字节数的指针
    LPOVERLAPPED lpOverlapped //如文件打开时指定了FILE_FLAG_OVERLAPPED,那么必须,用这个参数引用一个特殊的结构。该结构定义了一
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Visual Studio编写串口助手,你可以按照以下步骤进行操作: 1. 创建新的Visual Studio项目:打开Visual Studio,选择创建新的Windows Forms应用程序项目。 2. 添加串口控件:在工具箱中找到串口控件,将其拖放到窗体上。 3. 设置串口属性:在属性窗口中,设置串口的端口号、波特率、数据位、停止位和校验位等属性。 4. 编写串口通信代码:在代码编辑器中,编写与串口通信相关的代码。你可以使用SerialPort提供的方法来打开、关闭、发送和接收数据。 例如,你可以使用以下代码打开串口: ```csharp using System.IO.Ports; // 创建一个SerialPort对象 SerialPort serialPort = new SerialPort(); // 设置串口号 serialPort.PortName = "COM1"; // 设置波特率 serialPort.BaudRate = 9600; // 打开串口 serialPort.Open(); ``` 你还可以使用以下代码发送数据: ```csharp // 发送数据 serialPort.Write("Hello World!"); ``` 和接收数据: ```csharp // 接收数据 string data = serialPort.ReadExisting(); ``` 5. 添加事件处理程序:为串口控件的事件添加处理程序,例如接收数据的事件(DataReceived)或错误事件(ErrorReceived)。在事件处理程序中,你可以处理接收到的数据或处理发生的错误。 6. 构建和调试:构建你的项目并进行调试。你可以在Visual Studio的调试器中观察串口通信的过程,以确保代码的正确性。 你可以根据自己的需求和功能来扩展和修改代码。希望这些步骤可以帮助你开始编写串口助手。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值