关于wince下串口问题

王朝system·作者佚名  2006-01-09
宽屏版  字体: |||超大  

关于wince下串口问题

我的sbc84500上面有4个物理串口:

串口1:中断号4,io口地址:3F8H

串口2:中断号3,io口地址:2F8H

串口3:中断号10,io口地址:3E8H

串口4:中断号11,io口地址:2E8H

我使用pb定制操作系统时只能添加三个串口,在定制的wince上运行串口测试程序发现,我打开COM1:后操作的是物理串口2,收发数据正常。打开COM2:操作的为物理串口3,发送一次数据后程序无响应。可以打开COM3:,但不能收发数据。

我到网上的相关网站搜索了一下,得知物理串口1是用来调试用的,正常情况下,我们的应用程序不能够访问。

我在注册表中查到的wince下的三个串口设置为:

[HKEY_LOCAL_MACHINE\DRIVERS\BuiltIn\Serial]

SysIntr=dword:13 //10H+3

IoBase=dword:02F8H

IoLen=dword:8

Prefix="COM"

Dll="Com16550.dll"

DeviceArrayIndex=dword:0

Order=dword:0

Priority=dword:0

[HKEY_LOCAL_MACHINE\DRIVERS\BuiltIn\Serial2]

SysIntr=dword:14 //10H+4

IoBase=dword:03E8

IoLen=dword:8

Prefix="COM"

Dll="Com16550.dll"

DeviceArrayIndex=dword:0

Order=dword:0

[HKEY_LOCAL_MACHINE]-[DRIVERS]-[BuiltIn]-[Serial3]

SysIntr=dword:15 //10H+5

IoBase=dword:02E8

IoLen=dword:8

Prefix="COM"

Dll="Com16550.dll"

DeviceArrayIndex=dword:0

Order=dword:0

我把注册表中的三个串口的SysIntr和IoBase分别改为与物理串口2,3,4相对应。如下:

[HKEY_LOCAL_MACHINE\DRIVERS\BuiltIn\Serial]

SysIntr=dword:13 //10H+3

IoBase=dword:02F8H

IoLen=dword:8

Prefix="COM"

Dll="Com16550.dll"

DeviceArrayIndex=dword:0

Order=dword:0

Priority=dword:0

[HKEY_LOCAL_MACHINE\DRIVERS\BuiltIn\Serial2]

SysIntr=dword:1A //10H+10

IoBase=dword:03E8

IoLen=dword:8

Prefix="COM"

Dll="Com16550.dll"

DeviceArrayIndex=dword:0

Order=dword:0

[HKEY_LOCAL_MACHINE\DRIVERS\BuiltIn\Serial3]

SysIntr=dword:1B //10H+11

IoBase=dword:02E8

IoLen=dword:8

Prefix="COM"

Dll="Com16550.dll"

DeviceArrayIndex=dword:0

Order=dword:0

运行测试程序结果与刚才还是一样,为什么COM1正常,而COM2与COM3却不正常呢,我发现注册表中COM1的键比COM2\COM3多出了一个Priority键,是不是问题处在这里?我在COM2和COM3的注册表项中都添加了Priority键,键值为0。运行测试程序发现:3个串口都能正常打开关闭,也能够正常收发数据,但又出现了新的问题:COM1对应成了物理串口4,COM2对应物理串口3,COM3对应物理串口2。这个问题还是以后再说吧。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有