波特率大于115200 打不开串口

chpst 2007-09-21 05:31:30
bcb 写的串口程序,要用大于115200波特率,可打不,开要到921600,那位高手知道如何设
不要说PC串口最高支持到115200啊,我用串口调试器2002 build 2.0405.01试过,人家可以的啊.
请高手指点一二,谢过.
...全文
2021 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
CamelFang 2007-09-25
  • 打赏
  • 举报
回复
如果需要这么高的速率,建议使用USB转RS232的方式,市面上这种产品很多,一般都是用FTDI或者PL2303的芯片.感觉FTDI的比较好用一些.
或者使用PCI接口的转串口卡,比较常见的是MOXA的.
chpst 2007-09-25
  • 打赏
  • 举报
回复
This problem occurs because the maximum port speed that is supported in Windows 2000 Service Pack 3 and earlier versions of Windows 2000 is 115,200. Windows 2000 Service Pack 4 and later versions support port speeds up to 921,600.
我已经是sp4了。串口调试器2002 build 2.0405.01试过是可疑到921600的。是程序不行,打不开串口
cczlp 2007-09-25
  • 打赏
  • 举报
回复
把UART时钟分频后,
设置成115200bps,实际工作在921600.
就是115200对应921600
chpst 2007-09-24
  • 打赏
  • 举报
回复
oid __fastcall TForm1::Button_OpenClick(TObject *Sender)
{

//char *ComNo;
char *comport;
DCB dcb;
String Temp;


AnsiString s_comport,s_baud;
AnsiString s_GunNo;
int i_baud,i_lsuse,i_lsuse1,i_lsuse2,i_getnum,i_sendnum;


s_baud=ComboBox_Speed->Text;
s_comport=ComboBox_COM->Text;


s_baud=Trim(s_baud).Delete(1,4);
s_comport=Trim(s_comport).Delete(1,4);
i_lsuse=s_baud.AnsiPos("b");
s_baud=s_baud.SubString(1,i_lsuse-1);
i_baud=s_baud.ToIntDef(0);

comport=s_comport.c_str();

hComm=CreateFile(comport,GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, 0);
if (hComm==INVALID_HANDLE_VALUE)
{
ShowMessage("Can't Open Com_port");
CloseHandle(hComm);
return;
}

GetCommState(hComm,&dcb);
dcb.BaudRate=i_baud;
dcb.ByteSize=8;
dcb.Parity=NOPARITY;
dcb.StopBits=ONESTOPBIT;
SetCommState(hComm,&dcb);

if (!SetCommState(hComm, &dcb)) { // 设置COM的状态
MessageBox (0, "通信端口设置错误!!!","Set Error",MB_OK);
CloseHandle(hComm);
return;
}
Read232->Resume();

}

chpst 2007-09-24
  • 打赏
  • 举报
回复
GetCommState(hComm,&dcb);
dcb.BaudRate=i_baud;
dcb.ByteSize=8;
dcb.Parity=NOPARITY;
dcb.StopBits=ONESTOPBIT;
SetCommState(hComm,&dcb);

if (!SetCommState(hComm, &dcb)) { // 设置COM的状态
MessageBox (0, "通信端口设置错误!!!","Set Error",MB_OK);------> 大于115200 这里就错。
CloseHandle(hComm);
return;
}
i_love_pc 2007-09-24
  • 打赏
  • 举报
回复
This problem occurs because the maximum port speed that is supported in Windows 2000 Service Pack 3 and earlier versions of Windows 2000 is 115,200. Windows 2000 Service Pack 4 and later versions support port speeds up to 921,600.

来自http://support.microsoft.com/default.aspx?scid=kb;en-us;320691
e_board 2007-09-24
  • 打赏
  • 举报
回复
你的端口是低速端口的原因
cczlp 2007-09-21
  • 打赏
  • 举报
回复
实际就是几行汇编代码, 往端口写数.
cczlp 2007-09-21
  • 打赏
  • 举报
回复
cczlp 2007-09-21
  • 打赏
  • 举报
回复
默认情况下, 最高是115200, 如果改变设置, 可以达到921600, 但受硬件限制, 这时可能波形很差, 出错率高.
i_love_pc 2007-09-21
  • 打赏
  • 举报
回复
msdn:

Settings 属性


设置并返回波特率、奇偶校验、数据位、停止位参数。

语法

object.Settings[ = value]

Settings 属性语法包括下列部分:

部分 描述
object 对象表达式,其值是“应用于”列表中的对象。
value 字符串表达式,说明通讯端口的设置值,如下所述。


说明

当端口打开时,如果 value 非法,则 MSComm 控件产生错误 380(非法属性值)。

Value 由四个设置值组成,有如下的格式:

"BBBB,P,D,S"

BBBB 为波特率,P 为奇偶校验,D 为数据位数,S 为停止位数。value 的缺省值是:

"9600,N,8,1"

下表列出合法的波特率:

设置值

110
300
600
1200
2400
9600(缺省)
14400
19200
28800
38400
56000
128000
256000


下表说明合法的奇偶校验值。

设置值 描述
E 偶数 (Even)
M 标记 (Mark)
N 缺省 (Default)
None
O 奇数 (Odd)
S 空格 (Space)


下表列出合法的数据位值。

设置值

4
5
6
7
8 (缺省)


下表列出合法的停止位值。

设置值
1 (缺省)
1.5
2


数据类型

String
Waiting4you 2007-09-21
  • 打赏
  • 举报
回复
试了可以开到115200的,你是用API编的吗? 把代码段拿出来看看

1,222

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧