微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

波特率串行窗口

探测windows串口我写了这个程序。 我将串口波特率设置为115200 bps。 当我运行这个程序时,经过的时间是1250毫秒,所以波特率只能达到102400bps。 我也用类似的程序检查接收波特率,波特率是一样的。

这个程序是:

char* message = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; int numBytes = 144; c0 = clock() for (;;) { sendSerial(&hCom,message,numBytes ); tx +=numBytes; //14400 bytes * 8 = 115200 bps if (tx >= 14400) { c1 = clock(); runtime_diff_ms = (c1 - c0) * 1000. / CLOCKS_PER_SEC; printf("Tx frames %d Time ms %f",tx,runtime_diff_ms); system ("pause"); return -1; } } bool sendSerial(HANDLE *hCom,char *WriteBuffer,DWORD dwBytesToWrite) { DWORD dwBytesWritten = 0; BOOL bErrorFlag = FALSE; bErrorFlag = WriteFile( *hCom,// open file handle WriteBuffer,// start of data to write dwBytesToWrite,// number of bytes to write &dwBytesWritten,// number of bytes that were written NULL); ... }

这些是我的串口规格:

DCB dcbSerialParams; COMMTIMEOUTS timeouts; dcbSerialParams.Baudrate=CBR_115200; dcbSerialParams.ByteSize=8; dcbSerialParams.StopBits=OnesTOPBIT; dcbSerialParams.Parity=nopARITY; timeouts.ReadIntervalTimeout=MAXDWORD; timeouts.ReadTotalTimeoutMultiplier=MAXDWORD; timeouts.ReadTotalTimeoutConstant=5000; // 5sec timeouts.WritetotalTimeoutMultiplier=10; timeouts.WritetotalTimeoutConstant=100;

任何人都知道如何解决这个问题,达到115200 bps?

UART初始化:防止UART拉高RTS

拔下并重新插入连接器后无法从串行设备读取

串口写入成功,读取失败

Linux串行认shell的IP隧道

如何在Linux中创build虚拟io设备,将数据代理到真实设备?

如何使用Win32 API与COM口(RS232)进行通信

在Linux环境下将串口数据转换为TCP / IP

监视(嗅探)/ dev / ttyUSB0由FTDI USB串行转换器创build

除非Arduino GUI串行监视器打开,否则不能回显到Arduino串行端口

串口通信C ++ Linux

每个字符有10位 – 数据加8位起始和停止位。

如果计算每个字符10位的14400个字符应该以115200 bps的速度运行多长时间,那么您将得到1250 ms:

(14400 characters * 10 bits/character) / (115200 bits/second) = 1.250 seconds

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐