玩轉X-CTR100 | X-PrintfScope波形顯示
更多塔克創新資訊歡迎登陸【塔克社區 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/ 】
X-CTR100控制器配套的X-PrintfScope串口波形顯示功能的使用,如其名,軟件最大亮點是可以通過C語言Printf函數實現波形顯示功能,使用簡單靈活。另外也支持常規的串口通信協議,實現高效率傳輸。
原理介紹
X-CTR100控制器配套X-PrintfScope串口波形顯示軟件,具有八個顯示通道,最大特點是可通過C標準庫函數printf增加@標識實現數據波形顯示,例如printf("@%d %f ",a,b)可實現一個整形一個浮點類型數據波形顯示,使用方便靈活。Printf協議使用字符編碼方式,雖然使用方便靈活,但傳輸效率相對較低,本軟件也支持高效的Data協議傳輸方式。
X-PrintfScope基於功能強大的Iocomp控件設計,軟件界面及功能介紹如下圖所示,詳細使用請參考軟件幫助或軟件使用說明文檔,本教程對軟件基本操作進行說明。
串口設置
- 軟件啟動後,會自動搜索可用的串口,並在端口號下拉框處顯示可用串口。如果有可用串口單擊"OPEN"按鈕即可打開對應串口,並且顯示串口狀態和參數信息(S:COM3_ON 115200 N 8 1),串口參數為默認參數(波特率:115200,校驗位:NONE,數據位:8,停止位1)。
- 多個可用串口時,端口號下拉框可選擇和切換不同串口。
- 波特率下拉框可以選擇不同波特率。
- SET按鈕可以打開不常用的‘校驗位‘‘數據位‘‘停止位‘串口參數設置對話框。
- 進入串口參數設置對話框可進行參數設置,完成後單擊參數更新即可完成參數設置。考慮到常用情況,參數設置不具有記憶性,每次進入均顯示常用的默認參數值。
- 不支持串口熱插拔,熱插拔會報錯誤,建議關閉串口後再進行串口插拔。
波形顯示
- 具有八個波形顯示通道,使用不同顏色表示
- 波形可以拖動、放大、縮小操作
- 示波器上方具有幀數和幀率顯示
- 建議最大發送幀率為120,幀率與電腦顯示性能有關,幀率過大容易導致波形顯示延遲
- CLEAR按鈕實現波形和數據清除
- VIEW按鈕實現數據顯示(待實現)
- SAVE按鈕實現數據保存為txt格式文件,文件名默認為"xx月xx日xx時xx分xx秒_.txt",其中xx為當前時間,"_"後可增加內容字符描述。
- LOAD按鈕可實現保存數據的波形顯示(待實現)
- Axes欄X、Y滑動條可進行X軸和Y軸數據縮放操作
通道操作
- Channel欄SET按鈕可實現波形通道相關操作,單擊可進入通道設置對話框
- 通道設置對話框 Name欄可定義波形通道名稱
- View復選框可控制該通道波形是否顯示
- Scale欄為輸出與輸入的比例系數
- Shift欄為輸出與輸入的唯一系數
- Scale和Shift可以方便進行波形顯示範圍的控制,方便進行不同數量級波形同屏顯示
Printf通信協議
- Printf協議:通過C語言Printf函數增加@標識實現數據波形顯示。
- 顯示示例函數:printf("@%d %d %f %f \r\n", a, b, x, y);,實際發送數據 @876 142 12.35 48.357
- @為幀頭標識符,回車換行\r\n為幀尾標識符。
- @幀頭後面緊跟數據。
- 每個數據後面加一個空格,作為數據標識符。
- 支持整型%d和浮點%f兩種數據類型。
- 數據數量為1~8,幾個數據對應幾個顯示通道
Data通信協議
- Data協議為高效率的數據編碼協議,傳輸效率比Printf協議高。
- 協議內容:0xAA + 0x55 + 數據個數 + 預留位 + 數據1低8位 + 數據1高8位 + …… + 校驗和。
- 數據個數:根據需要可以選擇1~8,對應數據1~數據8。
- 預留位:0x00
- 數據內容:數據位為16進制整型數據,低8位在前,高8位在後。數據數量與前面數據個數位對應。
- 校驗和:前面數據累加和的低8位。
- 範例:幀數據‘aa 55 03 00 43 fe 2a ff 74 ff df‘
發送功能
- 為方便系統調試,設計了數據發送功能,可實現下位機命令交互功能。
- 可以在Send區,發送您發送的任意字符。
- 支持16進制發送,勾選‘Hex‘復選框後,發送的時候將對發送區的內容進行16進制和字符互轉。
- Num為發送的字節數。
例程-Printf協議例程
使用MPU6050作為數據源,使用C語言Printf函數實現對MPU6050傳感器3軸加速度、3軸陀螺儀、溫度數據7個數據源進行波形顯示,其中加速度陀螺儀為整型數據,溫度為浮點數據。
硬件說明
硬件資源:
- 串口UART1
- LED燈
- MPU6050運動傳感器
軟件說明
通過MPU6050相關X-API接口進行數據采集,並將采集的數據通過printf函數輸出,主程序代碼如下。
int main(void) { float tmp; int16_t acel[3]; int16_t gyro[3];
//XRT1初始化 AX_Init(115200);
//模塊初始化及配置 AX_MPU6050_Init(); //MPU6050初始化 AX_MPU6050_SetAccRange(AX_ACC_RANGE_2G); //設置加速度量程 AX_MPU6050_SetGyroRange(AX_GYRO_RANGE_250); //設置陀螺儀量程 AX_MPU6050_SetGyroSmplRate(200); //設置陀螺儀采樣率 AX_MPU6050_SetDLPF(AX_DLPF_ACC94_GYRO98); //設置低通濾波器帶寬
while (1) { AX_MPU6050_GetAccData(acel); //讀取三軸加速度數據 AX_MPU6050_GetGyroData(gyro); //讀取三軸陀螺儀數據 tmp = AX_MPU6050_GetTempValue(); //讀取溫度傳感器數據
printf("@%d %d %d %d %d %d %f \r\n",acel[0],acel[1],acel[2],gyro[0],gyro[1],gyro[2],tmp);
AX_Delayms(7); AX_LEDG_Toggle(); } } |
實現效果
波形顯示效果如下圖所示,軟件會自動對數據進行跟蹤顯示,本例程幀率可以達到90,方便觀察數據可以拖動窗口到全屏顯示。
使用串口助手查看數據內容,如下圖所示。
玩轉X-CTR100 | X-PrintfScope波形顯示