基于STC89C51單片機的數字電壓表設計
void CCTestVotDlg::OnOnCommMscomml ()
{VARIANT variant_inp;
COleSafeArray safearray_inp;
LONGlen,k;
BYTE rxdata[1024];//設置字節數組
CString strtemp;
if(m_mscomm.GetCommEvent 0==2)//事件值為2 表示接收到數據
{variant_inp=m_mscomm.GetInput 0;//讀緩沖區
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize ();//得到有效的數據長度
for(k=0;klen;k++)
safearray_inp.GetElement(k,rxdata+k);//轉化成BYTE型數組
m_receive=rxdata[0];//將接收到的值賦予
float變量m_receive=m_receive/255;//接收到的數據為(0,255)之間的整數值
m_receive=m_receive*5;//這三步就得到0到5V的電壓值
m_receive=setprecision(m_receive,3)//這個函數的作用是保留小數點后三位
}
UpdateData(FALSE);//更新編輯框,將數值顯示在編輯框中
}本文引用地址:http://www.104case.com/article/173529.htm
4 結束語
上述實施方案可在實踐中很好地實現整個樣機的功能,實際使用證明,該儀器的各項指標都能達到預期效果。本文對使用MSComm串行通信的方法做了著重的分析,同時分析了ActiveX技術的強大功能、充分的靈活性和易用性,具有一定的實踐意義。
評論