直接控制串口通信是怎样的呢 相当于有一个文件 你要向里面写入数据 这写入的数据 就是控制相应设备的命令格式 命令发出去了 会收到设备的应答 应答也在这个文件里 然后用循环读取应答 就是读文件中的数据 为什么用循环呢?先尝试读一个字节 能不能读到 这也是判断设备参数是否设置正确的初始步骤 然后通过对长度 内容的判断 就是串口通信的控制及判断啦
串口通信的控制步骤:
1.CreateFile函数:(这个函数的各参数值较多 仅针对本次设置)
HANDLE CreateFile(
LPCTSTR lpFileName, // file name 文件名 现在我要控制串口 假设是COM3
DWORD dwDesiredAccess, // access mode 访问模式 现在当然是写
DWORD dwShareMode, // share mode 不共享 为0
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // SD 不需要继承返回句柄 为NULL
DWORD dwCreationDisposition, // how to create 串口通信 文件当然已经存在
DWORD dwFlagsAndAttributes, // file attributes 当前异步通信 设备都是半双工的
HANDLE hTemplateFile // handle to template file 异步通信这里就是NULL
);
在实际中 这样应用:
HINSTANCE hInst = (HINSTANCE)CreateFile("\COM3",GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);
函数返回值是一个句柄 对这个句柄 还是要判断是否成功:
if(hInst == INVALID_HANDLE_VALUE)
return -1;
串口通信的控制及判断
最新推荐文章于 2022-11-26 15:08:09 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)