问题描述
我正在尝试从 COM 端口读取数据。我使用了提高数据传输速度的 PL2303TA 转换器。我的数据传输速度是 3Mpbs,我正在寻找以这个速度读取数据的样本。 我用 C# 编写了一个程序并使用“while”循环来读取接收数据。但部分数据丢失。
int _max = 50000; // max sample
SerialPort port = new SerialPort("COM4",3000000,Parity.None,8,StopBits.One);
port.open();
List<string> slist = new List<string>();
while(true)
{
string sdata = port.ReadLine();
slist.Add(sdata);
if (slist.Count > _max)
break;
}
我的设备发送数据序列如下:
1,2,3,...,7000,1,3...,3
通过这段代码,我收到这样的数据:
1,5,6999,5
(我的设备是“ARM Micro-controller AT91SAM7S64-AU”并通过换行符发送每个数字:“\n”)
如何提高阅读速度?
谢谢。
PL2303TA USB 转串口桥控制器 http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=153&pcid=41
解决方法
这听起来不像是软件问题,而是硬件问题。使用这么高的速度时,请确保uart的线尽可能靠近。
当干扰仍然太高时,另一种选择是使用双绞线和屏蔽线。
如果您有示波器,请检查信号边缘。我认为它们不再具有干净的矩形形状。我不知道具体是芯片还是板,但有些板也支持所谓的过采样。如果信号中有噪声,这可能有助于对串行信号进行采样,因为它对单个位进行多次采样并使用平均值来确定单个位状态。