1、將串列埠接收的資料轉換為float型資料
float cxxdlg::fourchar2float(char* szbuf, //hex asc資料
bool bbigendian = false) //指示是否是big endian結構
float4byte;
float4byte f4b;
if(bbigendian) //大端模式 調整資料順序(因為pc機是小端模式)
else
return f4b.f; //返回浮點數資料
}
2、將float型資料轉換成cstring顯示,精確到小數點ndigit位
void cxxdlg::float2cstring(float fin, cstring& csout, int ndigit)
; //fin四捨五入,保留小數點後ndigit位
float ftimes = pow((float)10, ndigit);
int ntmp = (int)(fin*ftimes + 0.5);
fin = ntmp/ftimes;
sprintf_s(sztmp, sizeof(sztmp), "%f", fin);//將fin轉為字串
cstring cstmp = sztmp;
int npos = 0;
npos = cstmp.find(".");
csout = cstmp.left(npos);//小數點左邊的部分
csout += cstmp.mid(npos, ndigit+1);//小數點後面ndigit位,包括小數點
}
注:
變數f為float型,n為int型別,則能實現將f中的數值保留小數點後兩位,第三位四捨五入運算的表示式是
n=f*100+0.5,f=n/100.0
串列埠通訊中垃圾資料的處理
在雙機串列埠通訊中,開關機 串列埠開閉 期間傳送方有時候會發一些無效的垃圾資料,同時因為有的協議解析只有接收到一定數量才能解析。這就會出現乙個現象 如果開頭的資料是錯誤的,又沒有及時丟棄,後面正確的資料接著位置儲存,最終造成解析失敗。現象就是有時候資料互動正確,有時候錯誤 冷啟動第一次出現錯誤的機率...
串列埠通訊中整型和浮點型資料的處理和傳送
在做下位機通訊時往往會用到串列埠,包括下位機將資料傳輸給上位機,或者是下位機與下位機之間進行資料傳輸,這時候就會遇到傳送資料的問題,微控制器通過串列埠 傳送資料時往往是一次乙個位元組 8位 如果傳輸char 8位 型資料則很好辦,只需要直接傳送就可以了,但是在傳送int型資料和float型資料時 就...
互斥鎖在串列埠通訊中的簡單應用
嵌入式開發 硬體資源 互斥鎖 freertos作業系統 串列埠通訊 互斥鎖 英文 mutual exclusion,常縮寫為mutex,是一種常用在多執行緒程式設計中,防止多個執行緒對乙個公共資源做讀寫操作的機制,以保證共享操作的資料的完整性。互斥鎖是最基本的程序或者執行緒間同步的方法,用來保護臨界...