當前位置:首頁 » 編程語言 » c語言字元型數據串口通信
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言字元型數據串口通信

發布時間: 2022-12-20 08:25:57

c語言怎麼實現串口通信

編程原理
程序1為查詢通信方式介面程序,為一典型的數據採集常式。其中bioscom()函數初始化COM1(此函數實際調用BIOS
INT
14H中斷0號功能)。這樣在程序中就避免了具體設置波特率因子等繁瑣工作,只需直接訪問發送/接收寄存器(3F8H)和線路狀態寄存

⑵ 請問c語言編寫的串口通信裡面 如何分別定義單個位(1個位元組=8位)表達的意思

你可以不定義單個位變數,那樣不好組合在一起,這樣也可以:
unsigned char b;//聲明字元型變數
unsigned char ch;//串口通信獲得的數據
unsigned char else;//定義另一個字元變數
......
b = char & 0x80;//獲得char的最高位
相同辦法獲得另一個字元的兩位,再放到b中,switch(case)判斷b的值就行了。

⑶ 串口通訊中要發送字元型數據接收時怎樣判斷接收完畢

你之前用的隊列結構是完全可行的。
有幾個問題你必須清楚:
1.
讀取txt文件中的數據,txt中數據是死的,也就是說讀取過程叫做
----
數據回放
2.
讀取實際信息的數據,數據是活的,通常可以叫做
---
動態數據採集
(實時採集)
針對第一點來說:
數據回放,是指要求你把已經有的數據,按不同的時間段進行回放,這需要你對txt文件中的數據的格式,怎麼回放,回放時間間隔把握好。
這個我建議你先不要做,因為數據回放
就是把數據一個個拿出來,再按時間排列去一個個顯示出去,
不如實時採集來的直接。
第二點,
實時採集,
也就是說,數據來源可以有兩種:
1.
真實數據。
2.
模擬數據。
在你之前的范常式序中,也就是「基礎隊列.vi」中,
在循環內部的隨機數模塊,就是模擬數據。
也就是說,是人為做的一個循環隨機數。
而真實數據,
就是實際採集到的數據(替換模擬數據)。
真實數據來源有很多種,比如,串口通訊,接收到的不停變換的數據(動態數據)。
在最初做這個項目的時候,我的建議是,如果不了解
真實數據(板卡數據採集/通訊等),
那麼就使用模擬數據,
在labview中有很多可以模擬的子VI,比如正玄波發生器等等。
或者,
人為造信號,比如之前的「基礎隊列.vi」中,範例造的隨機數信號。
這里就涉及到你之前問的一個問題,

---
字元串

(這些是計算機基礎知識)
字元在c語言中是char類型,在數據的傳遞中,
字元串是以ASCII碼形式傳輸的,
說白了也是數
只不過比如「s」對應的ASC碼數是「78」(沒查表只是舉例)。
在內存中佔1個位元組。
所以,當以字元串傳遞數據的時候,
數的表現形式往往是

看不懂的,因為是ASC碼
所以,你傳遞整數,
傳遞字元串,其道理是一樣的,只是如何能讓人
來讀懂這些數。
所以
「基礎隊列.vi」中的
隨機數
vi
是以double雙精度數傳遞的
一個
數,
而你所要做的就是

這個
隨機數vi
換成
字元串的輸出形式。
labview查找
數組轉字元串
這個vi

字元串轉8位數組
這個vi,
然後查看如何使用,可以幫助你,
而demo的
「基礎隊列.vi」程序可以保留,
你所要做的就是以上說的這些基礎。
如果無法理解數據
傳輸
,以及相關的計算機基礎
知識,
只能惡補了,現在很難幾句說清楚啊

⑷ C語言變成實現串口收發數據

#include <reg51.h>

#include <intrins.h>

unsigned char key_s, key_v, tmp;

char code str[] = "welcome!www.willar.com ";

void send_str();

bit scan_key();

void proc_key();

void delayms(unsigned char ms);

void send_char(unsigned char txd);

sbit K1 = P1^4;

main()

{

TMOD = 0x20; // 定時器1工作於8位自動重載模式, 用於產生波特率

TH1 = 0xFD; // 波特率9600

TL1 = 0xFD;

SCON = 0x50; // 設定串列口工作方式

PCON &= 0xef; // 波特率不倍增

TR1 = 1; // 啟動定時器1

IE = 0x0; // 禁止任何中斷

while(1)

{

if(scan_key()) // 掃描按鍵

{

delayms(10); // 延時去抖動

if(scan_key()) // 再次掃描

{

key_v = key_s; // 保存鍵值

proc_key(); // 鍵處理

}

}

if(RI) // 是否有數據到來

{

RI = 0;

tmp = SBUF; // 暫存接收到的數據

P0 = tmp; // 數據傳送到P0口

send_char(tmp); // 回傳接收到的數據

}

}

}

bit scan_key()

// 掃描按鍵

key_s = 0x00;

key_s |= K1;

return(key_s ^ key_v);

}

void proc_key()

// 鍵處理

{

if((key_v & 0x01) == 0)

{ // K1按下

send_str(); // 傳送字串"welcome!...

}

}

void send_char(unsigned char txd)

// 傳送一個字元

{

SBUF = txd;

while(!TI); // 等特數據傳送


TI = 0; // 清除數據傳送標志

}

void send_str()

// 傳送字串

{

unsigned char i = 0;

while(str[i] != '')

{

SBUF = str[i];

while(!TI); // 等特數據傳送

TI = 0; // 清除數據傳送標志

i++; // 下一個字元

}

}

void delayms(unsigned char ms)

// 延時子程序

{

unsigned char i;

while(ms--)

{

for(i = 0; i < 120; i++);

}

}

拓展資料

C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。

二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標准局為C語言制定了一套完整的美國國家標准語法,稱為ANSI C,作為C語言最初的標准。目前2011年12月8日,國際標准化組織(ISO)和國際電工委員會(IEC)發布的C11標準是C語言的第三個官方標准,也是C語言的最新標准,該標准更好的支持了漢字函數名和漢字標識符,一定程度上實現了漢字編程。