原创 QT (1) 編寫Qt類庫來設計上下位機串口通信系統的上位機

前言 前一篇文章講到了利用C#窗體應用程序來設計上位機的界面軟件,但是這樣的界面軟件還不夠通用,只能定製化運行,圖形界面的代碼和上位機初步處理數據的代碼耦合性較高。所以這篇文章講了利用QT Creator將上位機部分的代碼編寫成Q

原创 Arduino(2) Mega2560和外部設備串口通信

前言 Arduino開發板因爲搭載的I/O資源較少,所以通常會採用串行通信方式。其中Arduino硬件集成了串口、IIC、SPI三種常見的通信方式,可以與具有相應通信接口的各種設備通信。這一章先介紹一下串口通信。 參考:CSDN博

原创 驅動程序(2) Win10+VS2017驅動程序在雙機通信下的內核態調試

上一篇內容裏已經講到了如何搭建雙機通信,這也是爲內核態下的驅動程序調試做準備。衆所周知,KMDF驅動程序主要分爲兩個部分的代碼,一個是包含DriverEntry、DeviceAdd和一些對於觸發事件的回調函數,下面我會統一稱爲驅動

原创 驅動程序(1) win10下Visual Studio 2017的安裝以及雙機調試搭建

前言:畢業上班以來,現在這個項目比較缺一個做windows下驅動程序開發的,所以本人就負責這方面的工作。之前沒有接觸過,完全萌新,全靠一本武安河編著的《Windows設備驅動程序WDF開發》和各路網上大神們的博客。現在把這段時間來

原创 Visual C# (1) 使用windows窗體應用程序設計上下位機串口通信系統的上位機界面

前言 前一篇文章講了利用Arduino mega2560來設計上下位機串口通信系統的下位機,這一章則要講如何設計上位機界面軟件,這裏我們先選用了VS2013自帶的Visual C#。這是微軟公司開發的C#編程語言規格之集成開發環境

原创 Arduino(5) 使用Mega2560設計上下位機串口通信系統的下位機

前言 因項目需求,我們要從PC端去控制一些外部設備,比如激光器、光放大器等,這些設備一般使用到的都是低速的串口通信,所以我們需要設計一個上下位機串口通信系統來控制這些設備。這篇文章先講如何使用Arduino Mega2560開發板

原创 Arduino(4) 編寫和使用類庫

前言 在使用Arduino mega2560作爲控制板時,如果需要控制的模塊比較多,那麼將代碼全部都寫在一份文檔裏會顯得十分臃腫,不利於後續的代碼維護和進一步開發,所以根據不同的模塊編寫相對應的類庫就很重要了。 1. 編寫類庫 在

原创 Arduino(3) Mega2560和外部設備SPI通信

前言 這篇文章主要講Arduino串行通信裏的SPI通信。SPI(Serial Peripheral Interface,串行外設接口)高速通信接口一般用在於對於數據量要求比較大的設備或者場景裏,例如SD卡,網絡芯片,而Ardui

原创 Arduino(1) 軟件安裝和初步使用

前言 因項目需要開始做上下位機的通信程序,下位機用的控制板就是Arduino,型號是mega2560,它提供了四組UARTs通信接口,也支持SPI和I2C通信。 參考書籍: Arduino程序設計基礎(第2版)——陳呂州 Ard

原创 Arduino(2) 外部設備串口通信

前言 Arduino開發板因爲搭載的I/O資源較少,所以通常會採用串行通信方式。其中Arduino硬件集成了串口、IIC、SPI三種常見的通信方式,可以與具有相應通信接口的各種設備通信。這一章先介紹一下串口通信。 參考:CSDN博

原创 驅動程序(13) 將Windriver編寫的程序製成DLL供其他程序調用

製作動態鏈接庫(DLL) 之前的操作裏,我通常是將寫好的程序生成exe文件,運行來看結果如何;但是實際中往往驅動程序需要被上層軟件調用,比如我現在利用windriver來完成DMA傳輸後,傳輸好的數據需要提供給上層軟件繼續使用,這

原创 驅動程序(12) Windriver下訪問虛擬設備內存資源的方法

前言 在驅動程序(10)裏曾經講過有一種方法,可以把電腦端的一部分內存保留下來製成類似於虛擬設備,只提供給windriver使用,從而作爲DMA傳輸的目的地址。現在講一下當DMA傳輸完成之後,如何去訪問這塊內存資源。實際上,我們就可以

原创 驅動程序(11) Windriver下讀寫外部設備BAR內存資源的方法

前言 在利用windriver生成外部設備的驅動程序的時候,我們往往需要去訪問外部設備上的內存資源,windriver提供了幾種API接口(以下都以32位來介紹),只需要提供一些參數就可以訪問到外部設備的內存資源了。 WDC_Writ

原创 驅動程序(10) Windriver實現DMA傳輸時分配超大內存Buffer的辦法

前言 利用windriver做DMA傳輸的時候,尤其是將數據從板卡傳輸到PC端時,往往需要分配內存buffer。windriver給了兩種方法,Contiguous buffer模式(WDC_DNAContigBufLock)和Sca

原创 驅動程序(9) 利用Windriver修改代碼實現DMA傳輸定製功能的驅動程序

前言 前一篇文章講到了利用windriver來生成一個對應使用的板卡的驅動程序,並且有相對應的INF文件給板卡安裝上。這個生成的驅動程序代碼包含了基本的訪問板卡的功能,甚至可以實現DMA傳輸等功能(需要你的板卡支持DMA操作),但是這