windows下C语言怎么对串口进行读写操作
发布时间:2025-05-20 21:30:25 发布人:远客网络
一、windows下C语言怎么对串口进行读写操作
1、windows下对串口的操作可以通过WindowsAPI进行,也可以通过Linux下的read什么的直接操作,但是这种情况需要了解电路结构,比较麻烦,第三种有第三方提供的库,但是大多数针对C++,所以可能比较难找到顺手的第三方库.
2、那么,接下来就见要介绍一下串口通信用WindowsAPI通信的方式.
3、我们会发现,在文件名的位置填上"comX" X表示com口号,超过十的com口号需要另外的书写方式,这里不说了,因为网上一抓一大把,接下来,我们要对串口进行一系列的明确设置,这里就用到了一个结构体DCB结构,是专门用来描述一个com口的工作方式的,由于次结构体有28个成员,非常多,而且大部分的设置都是全世界通用的,所以,我们偷个懒,在打开一个com口之后,建立DCB结构体,接下来调用一个函数GetCommState用这个函数把现在com口的数据都写到DCB里,这样,比较通用的com口设置就已经弄好了,我们一般情况下只需要改一下DCB的波特率就好了,改好后马上用SetCommState把刚改好的结构体再写回去,这样串口就设置好了,现在还有点麻烦,串口设置好了,我们要它干什么呢?废话,读写数据呗,嘟~~~~~~可不能用fwrite和fread因为这个com口句柄不是文件句柄,是内核句柄,要用ReadFile和WriteFile来进行读写,又出麻烦了,我们怎么知道单片机什么时候发数据过来,就算我们知道,计算机什么时候知道啊?所以,一般的情况下,用ReadFile一直在哪检查,又是麻烦,通常情况下,一个com口的ReadFile设置是阻塞函数,影响编程啊!!!!!!
4、怎么办,很简单,你不阻塞吗,打通你呗,我们再建立里一个结构体COMMTIMEOUTS这个结构体描述里一个com口的相关超时设置,我们用GetCommTimeouts把数据读回来,具体的设置方法在网上也有,但是要注意,有一个MAXDWORD用它来设置读间隔超时设置就可以使ReadFile向kbhit()函数一样完全非阻塞了.
5、经过一些列的设置,事实上,现在已经可以通信了,要是有人觉得缓存不舒服,用SetupComm函数来重设缓存大小,对于传输速度比较快的通信,要把缓存设置的大些.
二、有关windows下串口编程的问题,波特率较高
电脑的串口的波特率也是有上限的,不是你想要多少都行的,这是要受硬件限制的,对于异步串行通信,波特率能达到256000已经是最大限定了,通常的电脑只支持到128000。虽然支持到128000,可是实际真要做到这个波特率,通信就变成很不稳定了,收发数据很容易会出现错误。你那要求921600,就是空想。再说了,什么设备需要这么高的波特率。非要这么高,用CAN总线吧,可以达到1M的波特率。
三、笔记本电脑Windows10系统可以安装Usb一sC09编程电缆驱动吗
注意:根据你所购买的电缆是几代的,请安装相对应的驱动程序。
1、《黑色一代电缆驱动》适用于以下电缆:
2、《黄色二代电缆驱动》适用于:所有黄色二代非隔离型电缆驱动。
3、《黄色三代电缆驱动》适用于:所有黄色三代隔离型电缆驱动。
4、《CP1H-CP1E-CP1L驱动》适用于:欧姆龙CP1H,CP1L,CP1E系列PLC。
5、《1747-UIC驱动》适用于:AB SLC5/01/02/03/05系列PLC。
6、《CA3-USBCB-01驱动》适用于:Proface GP3000系列以上人机。
7、《TSXPCX3030-C Drivers》适用于:TWIDO,MICRO,PREMIUM,M340系列PLC,功能与原装一模一样。
8、《Other Driver》适用于以下电缆:
usb-sc09-fx驱动安装步骤(以xp为例):
1、打开将要连接USB编程电缆的电脑电源,并确认电脑的USB口已经启动并正常工作。
2、将USB编程电缆插入电脑的USB接口,Windows将检测到设备并运行添加新硬件向导帮助你设置新设备,插入驱动程序光盘并单击下一步继续(如下图所示:)。
如果Windows没有提示找到新硬件,那么在设备管理器的硬件列表中,展开“通用串行总线控制器”,选择带问号的USB设备,单击鼠标右键并运行更新驱动程序。
3、Windows将检测到安装信息,显示“ USB High Speed Serial Converter”设备,并出现如下没有通过Windows徽标测试的信息框,单击“仍然继续”。
4、继续安装,让Windows拷贝驱动程序文件到你的硬盘。
5、当Windows显示完成找到新硬件向导,单击“完成”结束安装。
6、安装完成后,请确认在Windows的“开始\设置\控制面板\系统\硬件\设备管理器”菜单的“端口(COM和LPT)”展开条目中出现“ USB Serial Port(COMx)”,这个COMx就是USB编程电缆使用的COM口号。以后每次使用只要插入编程电缆就会出现该COM口,你只需在编程软件或通信软件等应用软件中选中该COM口即可。
1、如果电脑开机时未检测到插在电脑上的USB编程电缆(Windows的设备管理器中没有出现该电缆对应的COM口)或出现其它异常情况,请重新将USB插头拔插一次。
2、USB转UART是即插即用的USB设备,正在进行数据传输过程中不可以将其断开(断开是指从USB插座中拔出USB电缆),也就是说,必须在应用程序关闭该串口后,才能从USB插座中拔出电缆。
3、有时Windows系统故障或通信过程中拔插USB电缆也会出现USB通信异常,这时也许需要重新启动电脑和PLC。
4、一般来说,最好先将USB电缆插入USB插座,待计算机检测到COM口后再将编程电缆的另一端插到PLC通讯口上,因有些PLC工作主站方式时,其通信口始终在不停的往我发送数据,如先将电缆插入PLC的端口则会降低计算机正确识别COM口的速度。