3 回答

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
串口只有一條數(shù)據(jù)線一條地線, 所以數(shù)據(jù)是以串行方式發(fā)送的,所謂串行就是數(shù)據(jù)按bit位依次發(fā)送,如下圖
除了數(shù)據(jù)本身外一頭一尾加上起始位和停止位(通知接收端表示數(shù)據(jù)的開(kāi)始和結(jié)束), 有時(shí)還有校驗(yàn)位(發(fā)送數(shù)據(jù)的奇偶校驗(yàn)碼), 取決于串口的工作方式.
比如你在串口助手上發(fā)送字符串a(chǎn)bc, 實(shí)際串口發(fā)送是發(fā)送字母a,再發(fā)送字母b,c等
再詳細(xì)一點(diǎn),字母a,二進(jìn)制數(shù)表示是1100001, 發(fā)送它的流程是:
1)發(fā)送停止位
2)依次發(fā)送 1 0 0 0 0 1 1 (低位在前)
3)發(fā)送校驗(yàn)位
4)發(fā)送停止位
5)空閑
你就隨便在哪個(gè)類里加個(gè)靜態(tài)變量,比如放在窗體里,假定窗體名叫 form1,那就是
public static boolean showflag=true;
然后在接收事件中要顯示數(shù)據(jù)之前判斷
if(form1.showflag)
{
//開(kāi)始顯示數(shù)據(jù)
}
然后在那個(gè)暫停按鈕的click事件里寫(xiě)(假定這個(gè)按鈕叫button1,初始的text為暫停)
form1.showflag=!form1.showflag;
if(form1.showflag) button1.Text="暫停";
else button1.Text="顯示";

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊
public static boolean showflag=true;
然后在接收事件中要顯示數(shù)據(jù)之前判斷
if(form1.showflag) { //開(kāi)始顯示數(shù)據(jù) }
然后在那個(gè)暫停按鈕的click事件里寫(xiě)(假定這個(gè)按鈕叫button1,初始的text為暫停)
form1.showflag=!form1.showflag; if(form1.showflag) button1.Text="暫停"; else button1.Text="顯示";

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊
把接收的數(shù)據(jù)放在list或其它什么集合中,一個(gè)線程讀取數(shù)據(jù)集合,顯示接收到的數(shù)據(jù),暫停的話,只要控制顯示部分就可以了,這樣就不影響接收了
添加回答
舉報(bào)