第一篇:串口通訊的工作方式
串口通訊的工作方式
由于 CPU 與接口之間按并行方式傳輸,接口與外設之間按串行方式傳輸,因此,在串行接口中,必須要有 “ 接收移位寄存器 ”(串→并)和 “ 發送移位寄存器 ”(并→串).1.在數據輸入過程中,數據 1 位 1 位地從外設進入接口的 “ 接收移位寄存器 ”,2.當 “ 接收移位寄存器 ” 中已接收完 1 個字符的各位后,數據就從 “ 接收移位寄存器 ” 進入 “ 數據輸入寄存器 ”.3.CPU 從 “ 數據輸入寄存器 ” 中讀取接收到的字符.(并行讀取,即 D7~D0 同時被讀至累加器中).“ 接收移位寄存器 ” 的移位速度由 “ 接收時鐘 ” 確定.1.在數據輸出過程中,CPU 把要輸出的字符(并行地)送入 “ 數據輸出寄存器 ”,2.“ 數據輸出寄存器 ” 的內容傳輸到 “ 發送移位寄存器 ”
3,然后由 “ 發送移位寄存器 ” 移位,把數據 1 位 1 位地送到外設.“ 發送移位寄存器 ” 的移位速度由 “ 發送時鐘 ” 確定.接口中的 “ 控制寄存器 ” 用來容納 CPU 送給此接口的各種控制信息,這些控制信息決定接口的工作方式.“ 狀態寄存器 ” 的各位稱為 “ 狀態位 ”,每一個狀態位都可以用來指示數據傳輸過程中的狀態或某種錯誤.例如,用狀態寄存器的 D5 位為 “1” 表示 “ 數據輸出寄存器 ” 空,用 D0 位表示 “ 數據輸入寄存器滿 ”,用 D2 位表示 “ 奇偶檢驗錯 ” 等.能夠完成上述 “ 串 <--> 并 ” 轉換功能的電路,通常稱為 “ 通用異步收發器 ”(UART :Universal Asynchronous Receiver and Transmitter),典型的芯片有:Intel 8250/8251,16550
第二篇:串口通訊實驗報告
網絡編程與實踐實驗報告
實驗內容:串口通信編程 學號:S201502189 姓名:職榮豪 日期:2015-9-28
一、實驗要求
使用VS2010編寫基于對話框的MFC應用程序,兩個窗口分別使用兩個串口,使得這兩個窗口可以進行通信,包括數據的發送與接收。
二、實驗原理
本實驗使用Microsoft Communications Control控件,利用這個ActiveX控件,只需要編寫少量代碼即可輕松進行通信。
該控件相關的函數如下: put__CommPort:設置串口號
put_Settings:以字符串的形式設置波特率、奇偶校驗位(n-無校驗,e-偶校驗,o-奇校驗)、數據位數、停止位數
put_InputMode:設置接收數據的類型(0-文本類型,1-二進制類型)put_InputLen:設置從接收緩沖區讀取的字節數,0表示全部讀取 put_InBufferSize:設置接收緩沖區大小 put_OutBufferSize:設置發送緩沖區大小
put_RThreshold:設定當接收幾個字符時觸發OnComm事件,0表示不產生事件,1表示每接收一個字符就產生一個事件
put_SThreshold:設定在觸發OnComm事件前,發送緩沖區內所允許的最少的字符數,0表示發送數據時不產生事件,1表示當發送緩沖區空時產生OnComm事件
put_PortOpen:打開或關閉串口,傳入參數為true時打開串口,傳入參數為false時關閉串口 get_CommEvent:獲得串口上剛發生的事件,事件值為2表示接收到數據
get_InBufferCount:獲得緩沖區中的數據位數
get_Input:獲取緩沖區數據,返回類型為VARIANT put_Output:發送數據
三、設計思路
需要添加一個Microsoft Communications Control控件,用于進行串口通信。由于要求同一程序可運行兩個窗口進行相互通信,需要兩個窗口開啟兩個不同串口,故需要添加一個Edit Control控件用于輸入串口號,并添加打開串口按鈕,在點擊該按鈕時對串口控件的參數進行設置并開啟串口。同時添加關閉串口按鈕,點擊后關閉串口并可以對串口號進行修改。
需要添加兩個Edit Control 分別用于顯示接收到的數據以及輸入要發送的數據。需要添加一個發送按鈕,點擊后發送輸入的數據。
四、實驗步驟
1.建立基于對話框的MFC應用程序 2.添加界面控件并設置ID與Caption 添加Microsoft Communications Control控件,用于進行串口通信 添加一個Edit Control控件,用于輸入串口號,ID設置為IDC_PORT 添加一個Static Text控件,用于標注端口號,將Caption設置為“串口號:”
添加兩個按鈕,分別用于打開串口、關閉串口。IDC分別設置為IDC_BTN_OPEN、IDC_BTN_CLOSE,Caption分別設置為“打開”、“關閉” 添加兩個Edit Control,分別用于顯示接收到的數據以及輸入要發送的數據,ID分別設置為IDC_RECEIVE、IDC_SEND 添加兩個Static Text控件,用于標注接收區與發送區,Caption分別設置為“接收區”、“發送區”
添加一個按鈕用于發送數據,ID設置為IDC_BTN_SEND,Caption設置為“發送” 調整控件的大小與位置。
完成后如圖:
3.給控件綁定變量
右鍵單擊Microsoft Communications Control控件,選擇“添加變量”,變量名為m_com 打開類向導給控件添加變量:
給IDC_PORT綁定變量,用于存放輸入的端口號,數據類型為int,變量名為m_port 給IDC_RECEIVE綁定變量,用于存放接收到的數據,數據類型為CString,變量名為m_strReceive 給IDC_SEND綁定變量,用于存放輸入的待發送的數據,數據類型為CString,變量名為m_strSend
4.給控件添加事件響應函數
右鍵單擊Microsoft Communications Control控件,選擇“添加事件處理程序”,點擊“添加編輯”,生成響應函數,此函數用于接收數據。
在函數中添加以下代碼:
UpdateData(TRUE);if(nEvent == 2){
} UpdateData(FALSE);//將m_strReceive的值顯示到控件中
//更新m_strReceive的值
//獲取事件值
//獲取緩沖區位數
//時間值為2,此時為收到數據 int nEvent = m_com.get_CommEvent();int k = m_com.get_InBufferCount();if(k <= 0)//位數小于等于0時則返回 return;char* str =(char*)m_com.get_Input().parray->pvData;//獲取接收到數據的字*(str + k)= ' 主站蜘蛛池模板: 国产成人亚洲精品另类动态| 国语高潮无遮挡无码免费看| 四虎国产精品永久地址99| 亚洲色无码国产精品网站可下载| 男女做受高潮试看120秒| 亚洲妇女自偷自偷图片| 东北老头嫖妓猛对白精彩| 无码aⅴ精品一区二区三区浪潮| 久久中文字幕人妻熟av女| 日本亚洲欧美在线视观看| 亚洲国产精品久久久天堂| 性无码免费一区二区三区在线网站| 午夜无码精品国产片| 国产女厕所盗摄老师厕所嘘嘘| 欧美交换配乱吟粗大| 欧美老人巨大xxxx做受视频| 国产精品爽爽久久久久久蜜臀| 日本sm/羞辱/调教/捆绑视频| 日本xxxx裸体xxxx视频大全| 97色偷偷色噜噜狠狠爱网站| 久久综合伊人| 久久精品国产99久久香蕉| 欧美亚洲日本国产黑白配| 男同gay毛片免费可播放| 免费吃奶摸下激烈视频| 人妻无码视频一区二区三区| 国产精品久久久久久52avav| 亚洲精品国产综合久久一线| 天天摸天天做天天爽| 99香蕉国产精品偷在线观看| 一边捏奶头一边高潮视频| 精品亚洲国产成人av在线时间短的| 久久精品国产久精国产69| 午夜视频久久久久一区| 2019久久久高清日本道| 亚洲精品无码av天堂| 少妇被躁爽到高潮无码文| 国产人妻无码一区二区三区免费| 国产精品三级国产电影| 国产精品无码久久综合| 成人片黄网站色大片免费毛片|