![]() |
DOS DM&P 串口库参考手册 |
| 2003/05/27 Version 0.12 |
DOS SerPort库来源于我们开发的RSIP内核,支持4个串口和中断驱动通信;它是一个DOS 系统实模式下大型记忆体模型库,支持M6117D CPU的DM&P 产品。DOS SerPort库提供 简单的C函数,可以为开发人员节省大量的开发时间。
SerPort库使用前,必须知道I/O基地址和COM端口中断。COM1/2端口的缺省中断是IRQ4/3; 如果SBC有4个COM端口,COM3/4端口和COM1/2端口有相同的缺省中断。缺省的I/O 基地址和SBC中断如下表:
| COM1 | 3F8H | IRQ4 |
| COM2 | 2F8H | IRQ3 |
| COM3 | 3E8H | IRQ4 |
| COM4 | 2E8H | IRQ3 |
串口不支持中断共享,所以当4个COM端口使用时,推荐将COM3/4端口中断设置为 IRQ10/11;例如,6026的跳线JP7将COM33/4端口中断设置为IRQ10/11。串口端口支持的 中断设置如下表:
| COM1 | COM2 | COM3 | COM4 | Status |
| IRQ4 | IRQ3 | OK | ||
| IRQ4 | IRQ3 | OK | ||
| IRQ4 | IRQ3 | IRQ10 | IRQ11 | OK |
| IRQ4 | IRQ3 | IRQ4 | IRQ3 | Not Supported |
SerPort库中有一个演示程序“demo.c”,它用COM1端口发送键盘消息,用COM2接收该 消息。测试前,准备一根交叉电缆(管脚2和管脚3换接),用该电缆连接SBC上的COM1 和COM2端口,运行文件“demo.exe”,敲击键盘向COM1端口发送消息,COM2端口将会 接收到该消息。或者这样,连接SBC(1)的COM1端口和SBC(2)的COM2端口,运行文件 “demo.exe”,SBC(1)上的键盘消息将会发送到SBC(2)。
| 说明: | 初始化COM端口,设置缓冲区大小 | ||||||||||||||||||||||
| 参数: |
|
||||||||||||||||||||||
| 举例: |
SerPort_Open(COM1,4096,0x3f8,4); |
int SerPort_Close(enum COM_t ComPort);
| 说明: | 关闭一个COM端口 | ||||
| 参数: |
|
||||
| 举例: |
SerPort_Close(COM1); |
| 说明: | 检测COM端口是否正常初始化 | ||||
| 参数: |
|
||||
| 举例: |
if(SerPort_IsOk(COM1)==0) printf("Unable to initialize COM1.\n"); |
| 说明: | 设置COM端口参数 | ||||||||||||
| 参数: |
|
||||||||||||
| 举例: |
/* Set baud rate 115200 bps, no parity, 8 bits, 1 stop bit */SerPort_SetParam(COM1,BAUD_115200,PARITY_NO,LENGTH_8_BIT,STOPBIT_1_BIT); |
| 说明: | 缓冲区数据清零 | ||||
| 参数: |
|
||||
| 举例: |
SerPort_Clear(COM1); |
| 说明: | 检测奇偶校验是否出错 | ||||
| 参数: |
|
||||
| 举例: |
if(SerPort_IsParityError(COM1)!=0) printf("Parity error.\n"); |
| 说明: | 获取缓冲区有效数据大小 | ||||
| 参数: |
|
||||
| 举例: |
if(SerPort_Avail(COM1)) SerPort_RecvBuf(COM1,pcBuf,1024); |
| 说明: | 向COM端口发送缓冲区数据 | ||||||||
| 参数: |
|
||||||||
| 举例: |
SerPort_SendBuf(COM1,pcBuf,1024); |
| 说明: | 向COM端口发送ASCIIZ字符串数据 | ||||||
| 参数: |
|
||||||
| 举例: |
char *szAtCmd = "ATZ";SerPort_SendStr(COM1,szAtCmd); |
| 说明: | 向COM端口发送1 byte数据 | ||||||
| 参数: |
|
||||||
| 举例: |
char c = 'x';SerPort_SendByte(COM1,c); |
| 说明: | 从COM端口接收数据 | ||||||||
| 参数: |
|
||||||||
| 举例: |
char szBuf[1024];SerPort(COM1,szBuf,1024); |
| 说明: | 从COM端口接收1byte数据 | ||||||
| 参数: |
|
||||||
| 举例: |
char c;SerPort_RecvByte(COM1,&c); |
int SerPort_GetDTR(enum COM_t ComPort);
| 说明: | 获取数据终端准备状态 | ||||
| 参数: |
|
||||
| 举例: |
if(SerPort_GetDTR(COM1)){/* do something */} |
void SerPort_SetDTR(enum COM_t ComPort,int n);
| 说明: | 设置数据终端准备状态 | ||||||
| 参数: |
|
||||||
| 举例: |
SerPort_SetDTR(COM1,1); |
int SerPort_GetRTS(enum COM_t ComPort);
| 说明: | 获取发送状态的请求 | ||||
| 参数: |
|
||||
| 举例: |
if(SerPort_GetRTS(COM1)){/* do something */} |
void SerPort_SetRTS(enum COM_t ComPort,int n);
| 说明: | 设置发送状态的请求 | ||||||
| 参数: |
|
||||||
| 举例: |
SerPort_SetRTS(COM1,1); |
| Jan Yin Chan Electronics Co., LTD. 保留所有权利。 | 邮件地址:info@dmp.com.cn |