📄 serial.h
字号:
/*以下是串口操作所需要的函数原型以及参数说明*/
/* 串口参数中需要用到的所有宏定义*/
#ifndef ___SERIAL_H___
#define ___SERIAL_H___
#define BRG_48_IDX 0
#define BRG_96_IDX 1
#define BRG_192_IDX 2
#define BRG_384_IDX 3
#define BRG_576_IDX 4
#define BRG_1152_IDX 5
/******************************************************************************
* 检查指定端口(port: PORT0-->PORT4)发送缓冲区是否为空
* 0 -- Buffer 为空
* 1 -- Buffer 不为空
******************************************************************************/
byte CheckSdBufEmpty(byte port);
/******************************************************************************
* 检查指定端口(port: PORT0-->PORT4)的发送缓冲区是否满
* 函数返回: true -- 满
* false -- 不满
******************************************************************************/
byte CheckSdBufFull(byte port);
/******************************************************************************
* 检查指定端口(port: PORT0-->PORT4)接收缓冲区中是否有数据(是否空)
* 函数返回:
* true -- 缓冲区为空
* false -- 缓冲区不为空
******************************************************************************/
byte CheckRsBufEmpty(byte port);
/******************************************************************************
* 清除指定端口接收缓冲区中的数据
* 函数返回: NONE
******************************************************************************/
void ClrRsBuf(byte port);
/******************************************************************************
* 清除指定端口发送缓冲区中的数据
* 函数返回: NONE
******************************************************************************/
void ClrSdBuf(byte port);
/******************************************************************************
* 写指定长度(len)的数据(*str)到指定端口(port: PORT0-->PORT4)
* 函数返回: OK/NG
******************************************************************************/
byte Wr_Str_Uart(byte port, const byte *str, byte len);
/******************************************************************************
* 从指定串口(port: PORT0--PORT4)读取指定长度(len)的数据到*str中
* 函数返回: OK/NG -- 成功/失败
******************************************************************************/
byte Uart_ReadStr(byte port, byte *str, byte len);
/******************************************************************************
*直接写一个字节到串口缓冲区,
* port -- PORT0 --> PORT4
* sendByte : 需要发送的字节
* 函数返回: OK/NG == 成功/失败
******************************************************************************/
byte Uart_WriteByte(byte port, byte sendByte);
/******************************************************************************
* 从指定串口(port : PORT0-->PORT4)读取一个字节到*getByte,
* 如果成功读取,则函数返回OK,否则返回NG(比如超时错误等)
******************************************************************************/
byte Uart_ReadByte(byte port, byte *getByte);
/******************************************************************************
* 上电的时候,对串口进行初使化,包括
* a) 使物理串口能正常工作,都初使化在UART模式
* b) 设定物理参数, stop/data length/parity等
* c) 设定波特率
* 此处需要注意,对于b)和c)的设定,都是根据串口配置端口文件中的内容来进行,所以
* 如果此文件(ser_port[port]....)中数据错误,则不会正常的被初使化
******************************************************************************/
void InitSerial_PwrOn(void);
/******************************************************************************
* Describe: store the receive data to buffer
* Input :
* : 存放从串口接受到的数据到接收缓冲区中,如果接收缓冲区满,则放弃此次
* : 接收的数据
* out : none
* 说明: 这里没有关闭中断是因为它在中断里面调用的语句
******************************************************************************/
void Uart_Data_Store(BYTE port, byte ch);
/*
不发送数据,仅仅把它给删除:
*/
void Uart_Send_Null(byte port);
/*******************************************************************************
* Send data to send register according to the send buffer
* 直接把需要发送的字符写到发送寄存器,同时把需要状态标志设定为正在发送
* 2006-9-6 21:14 by ZhengXiaoChun
*******************************************************************************/
void Uart_Send_Data(byte port);
/*****************************************************
* Scanner Barcode数据输入 --> 需要进一步优化
*====================================================*/
void Uart_Scan_Data_Store(byte port, byte ch);
/*******************************************************************************
* 设定串口的Parity,DataLength和Stop Bit
* 指定端口号即可(即PORT0-->PORT4),然后此程序会从端口所对应的信息资料取数据对
* 物理端口进行初使化,也就是说,在调用此函数之前,必须把所需要设定的参数都更新
* 到ser_port[port].parity/data_len/stop_bit中.
******************************************************************************/
byte Uart_PortParityDataLenStopSet(byte port);
/*******************************************************************************
* 设定所有串口的所有参数为默认值,包括:
* 串口所连接的设备, 串口的Parity,Stop Bit, Data Length等等
* 在每次All Clear的时候,需要调用此函数对串口设备做初使化,在修改串口设备以及类型
* 以后,调用其它的函数实现设定.
*******************************************************************************/
void Uart_Port_SettoDft(void);
/*-----------------------------------------------------------------------------
* 根据输入的波特率代号,获取实际的波特率数值(WORD形)
* 波特率代号为: BRG_96_IDX --> BRG_576_IDX
*-----------------------------------------------------------------------------*/
WORD Uart_GetBaudRate(byte idx);
/*------------------------------------------------------------------------------
设定指定串口的波特率, port : PORT0 -> PORT4) == PORT4 用于在板打印机驱动.
* baud_idx: 波特率的Index No. == 非实际波特率
BRG_96_IDX -- BRG_576_IDX
*-----------------------------------------------------------------------------*/
void Uart_SetBaudRate(char port, char baud_idx);
/*------------------------------------------------------------------------------
*测试串口是否正常,输入参数PORT0--PORT4
*此程序不关心所送入参数是否正常,因为不同版本的硬件,串口分配不一样
*很简单的测试,向端口连续写入1024个字节的0x55aa
*-----------------------------------------------------------------------------*/
void Test_UartPort(char port_idx);
void Uart_Transfer(BYTE port);
#endif /*endif of ___SERIAL_H___*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -