?? 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 + -