maxchen 发表于 2009-4-24 10:03:56

delphi7+comport在921600波特率下的问题

各位好
小弟正在使用comport控件制作一个软件
主要的功能是使用串口发送图片数据到一个LCD上
现在在115200的波特率上已经可以使用了,但速度有一点慢
LCD的厂家有提供一个软件,支持USB转串口,因为屏上有一个CP210x芯片
在电脑上安装举动后,可以支持921600的波特率,可是那个软件经常死掉,所以我尝试自己写一个

现在我写的软件在115200上是可以使用的,但到了921600后,看到LCD屏上显示图片的进度
竟然比115200还要慢,我看了CP210x芯片的资料,说安装那个驱动后,那个虚拟的串口
可以像正常的串口那样使用的,但我做出来的速度竟然比115200还慢,请各位帮忙看看,写屏的代码如下

for j:=0 to Bitmap.Height-1 do
begin
    p := Bitmap.ScanLine;                     {读取当前行的像素颜色}
    k := 0;
    while k < Bitmap.Width do
    begin
      Comport1.WriteStr(HexStrToStr(IntToHex(j*800+k,6)));    {计算一祯显存首地址}
    for l:=k to k+99 do                      {一祯发送100个像素}
    begin
      if l >= Bitmap.Width then
            break;
            Comport1.WriteStr(HexStrToStr(IntToHex((((p.rgbtRed shr 3) shl 11)+((p.rgbtGreen shr 2) shl 5)+(p.rgbtBlue shr 3)),4)));   {转换成RGB565}
    end;
    Comport1.WriteStr(HexStrToStr('CC DD'));                   {祯结束符}
    k := l;
    end;
end;

串口设置的代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
ComPort1.ShowSetupDialog;
if Comport1.BaudRate = brCustom then
Comport1.CustomBaudRate := 921600;

    Comport1.Timeouts.ReadTotalMultiplier := -1;
    Comport1.Timeouts.ReadTotalConstant := -2;
    Comport1.Timeouts.WriteTotalMultiplier := 0;
    Comport1.Timeouts.WriteTotalConstant := 0;
      Comport1.Buffer.InputSize :=4096;
    Comport1.Buffer.OutputSize := 2048;
    Comport1.EventChar := #26 ;
    Comport1.FlowControl.XonChar := #17 ;
    Comport1.FlowControl.XoffChar := #19 ;
end;

请各位帮忙 看看出了什么问题,谢谢

lysoft 发表于 2009-4-24 11:38:58

高速232是和硬件有关的,目前支持此速度(1Mbps)的RS232电平转换芯片很少,推荐ADM3307,而常见的3238之流的是不行的
一般都不会是软件问题
另外用SPCOMM之类开源的控件会更好

maxchen 发表于 2009-4-24 11:44:41

但是,厂家的软件使用没有问题,所以应该不是硬件的问题
lcd屏不是我们自己做的,所以芯片我们不能选择
页: [1]
查看完整版本: delphi7+comport在921600波特率下的问题