91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 13KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2024-02-02
  • 語言: 其他
  • 標簽: ModBus??

資源簡介

ModBus-RTU協議C封裝 使用C封裝的,可以移植到任何平臺。

資源截圖

代碼片段和文件信息

/*************************************************************************************************************
?*?文件名: MODBUS_RTU.c
?*?功能: MODBUS_RTU通信協議層
?*?作者: cp1300@139.com
?*?創建時間: 2014-03-24
?*?最后修改時間:2015-07-02
?*?詳細: MODBUS?RTU通信協議層
2015-04-27:添加發送延時,防止通信幀結束時產生干擾
2015-05-20:修復當接收字節小于2的時候進行CRC校驗出現異常
2016-04-11:增加初始化標記,當沒有初始化時,直接退出modbus,增加內存檢測,如果內存指針為空,則退出
2017-03-06:增加底層接口支持,并且去掉了溢出檢測
2017-03-23:修改名稱錯誤,應為為modbus增加所有接口回調模式,完全與底層通信解耦,移植性能更強
2018-01-27:增加延時接口
*************************************************************************************************************/
#include?“system.h“
#include?“usart.h“
#include?“MODBUS_RTU.h“



//調試開關
#define?MODBUS_RTU_DBUG ? 0
#if?MODBUS_RTU_DBUG
#include?“system.h“
#define?modbus_debug(format...) uart_printf(format##__VA_ARGS__)
#else
#define?modbus_debug(format...) /\
/

#endif //MODBUS_RTU_DBUG





/*************************************************************************************************************************
*?函數 : bool?MODBUS_Init(MODBUS_HANDLE?*pHandleu8?*pTxBuff?u16?TxBuffSize?u16?TxByteTimeUs?u16?RxTimeOutMs?
bool?(*?pSendData)(u8?*pDataBuff?u16?DataLen)
int?(*?pReadData)(u8?**pDataBuff?u8?ByteTimeOut?u16?TimeOut?u16?*pReceiveDelay)
void?(*pClearRxData)(void)
void?(*pDelayMS)(u8?ms))
*?功能 : MODBUS?初始化
*?參數 : pHandle:當前初始化的MODBUS句柄pTxBuff:發送緩沖區指針;TxBuffSize:發送緩沖區大小;
TxByteTimeUs:發送1個字節的時間(用于RS485收發切換,特別是發送后的切換延時)延時大小為0-65535(us);RxTimeOutMs:接收超時單位mspReceiveDelay:返回接收延時,單位ms
pSendCallBack:發送回調函數(pDataBuff:發送數據緩沖區,DataLen:發送數據長度)
pReadCallBack:接收數據回調函數,會等待直到數據被寫入到接收緩沖區(pDataBuff:接收數據緩沖區,ByteTimeOut:等待的字節超時時間,單位msTimeOut:數據包超時時間,單位ms)
pClearRxData:清除接收數據緩沖區回調函數
pDelayMS:系統ms延時接口
*?返回 : FALSE:初始化失敗;TRUE:初始化成功
*?依賴 : 底層回調接口
*?作者 : cp1300@139.com
*?時間 : 2014-09-25
*?最后修改時間? :? 2017-03-23
*?說明 :? 發送緩沖區必須大于最大數據包大小否則會出現內存溢出
2017-03-23:增加回調,拋離底層依賴
2018-01-27:增加延時回調
*************************************************************************************************************************/
bool?MODBUS_Init(MODBUS_HANDLE?*pHandleu8?*pTxBuff?u16?TxBuffSize?u16?TxByteTimeUs?u16?RxTimeOutMs?
bool?(*?pSendData)(u8?*pDataBuff?u16?DataLen)
int?(*?pReadData)(u8?**pDataBuff?u8?ByteTimeOut?u16?TimeOut?u16?*pReceiveDelay)
void?(*pClearRxData)(void)
void?(*pDelayMS)(u8?ms))
{
pHandle->ID?=?0;
if(pHandle?==?NULL)?return?FALSE;
pHandle->WriteRegCnt?=?0; //寫入寄存器次數
pHandle->ReadRegCnt?=?0; //讀取寄存器次數
pHandle->ReturnTimeMs?=?0; //數據返回時間
pHandle->pTxBuff?=?pTxBuff; //發送緩沖區
pHandle->TxBuffSize?=?TxBuffSize; //發送緩沖區大小
pHandle->RxTimeOutMs?=?RxTimeOutMs; //接收超時時間
if(pHandle->RxTimeOutMs?RxTimeOutMs?=?20; //限制最小為20ms
pHandle->SlaveAddr?=?0; //從機地址無效?
pHandle->TxByteTimeUs?=?TxByteTimeU

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

????I.A....?????49949??2018-03-23?22:27??ModBus\MODBUS_RTU.c

????I.A....??????8686??2018-03-23?22:27??ModBus\MODBUS_RTU.h

????I.A....??????7525??2018-03-23?22:27??ModBus\MODBUS_SLAVE.c

????I.A....??????1202??2018-03-23?22:27??ModBus\MODBUS_SLAVE.h

?????目錄??????????0??2018-03-23?22:27??ModBus

-----------?---------??----------?-----??----

????????????????67362????????????????????5


評論

共有 條評論