<i id="le8eu"></i>
                1. 英創Linux主板的Python, C#實例簡介之一

                   2020-9-29     作者:Emtronix    

                    本文主要介紹在英創工控主板(ESM8000、ESM7000和ESM6800H)上,采用Python和C#編程,實現文件訪問、串口通訊、GPIO和網絡通訊的方法。用Python或C#編寫的程序,均可通過相應的class庫,直接操作這些接口。


                    本文的4個demo實例,均采用Visual Studio Code作為基本的編程工具,其代碼可在主板 + ESMARC評估底板上運行,其基本的硬件環境采用采用ESM8000工控主板 + 評估底板構成,如下圖所示:


                  esm8000套件側面2.png


                    實例1 – Step1_File:介紹文件讀取的基本方法(link to Step1_File)。

                    實例2 – Step2_Serial:介紹異步串口UART的應用方法,以ttyS2的收發為例(link to Step2_Serial)。豐富的串口資源是英創工控主板特色之一。

                    實例3 – Step3_Gpio:介紹通用數字IO(GPIO)的使用方法(link to Step3_Gpio)。英創工控主板均包含32位GPIO。

                    實例4 – Step4_Net:介紹網口的使用方法(link to Step4_Net)。這里網口既可以是常用的RJ45形式以太網口,也可以是SPF接口形式的光纖網口、WiFi無線局域網,以及4G/GPRS廣域網接口,英創Linux主板對這些網絡都有完善的支持。


                  Step1_File


                    userinfo.txt是英創Linux主板(ESM8000、ESM7000和ESM6800H)的基本配置文件,存放在/mnt/mmc/目錄下。讀取文件userinfo.txt信息,打印到console;提取eth0網口的IP參數,打印到console。


                    測試硬件平臺:ESM8000 + ESMARC評估底板,僅使用調試串口。


                    Python實現


                    首先創建一個新目錄,如D:\Python>mkdir Step1_File,然后啟動VS Code,打開該目錄同時點擊“New File”添加文件step1_file.py,并在該文件編寫相應的實現代碼,如下:


                  英創Linux主板的Python, C#實例簡介之一.png


                    代碼編寫好后,即可直接在ESM8000板卡上直接運行。


                    開發中為了方便測試,一般采用文件系統掛載的方式進行,詳細的配置和使用的方法請參考ESM8000使用必讀中相關介紹(link to 使用必讀)。


                    在ESM8000 console終端中運行如下命令:

                    root@ESM8000#>mount -t nfs -o nfsvers=3 192.168.201.12:/home/zhl/esm8000/python /mnt/nfs

                    root@ESM8000#>cd /mnt/nfs/step1_file

                    root@ESM8000#>python3 step1_file.py


                    即可在終端看到該程序的執行結果。


                    C#實現


                    首先創建一個新目錄,如D:\CSharp>mkdir Step1_File,然后啟動VS Code,打開該目錄如下:


                  英創Linux主板的Python, C#實例簡介之一.png


                    在VS Code的Terminal窗口中執行dotnet new console,創建C# Project,可看到基本程序框架如下:


                  英創Linux主板的Python, C#實例簡介之一.png


                    編寫代碼實現Step1_File要求的功能:


                  英創Linux主板的Python, C#實例簡介之一.png


                    執行dotnet publish –r linux-arm64 –self-contained false,編譯程序并發布可以在ARM64 CPU架構的Linux系統中運行的代碼。


                    發布的可執行代碼包含在..\Step1_File\bin\Debug\net5.0\linux-arm64\publish\目錄下。ESM8000目標機只需掛載開發主機的這個目錄,就可以運行這個程序了。


                    開發主機若為Linux系統,掛載命令為:

                    root@ESM8000#>mount -t nfs -o nfsvers=3 192.168.201.137:/home/x10/esm8000/csharp  /mnt/nfs


                    開發主機若為Windows系統,掛載命令為:

                    root@ESM8000#>mount -t nfs -o nfsvers=3 192.168.201.14:/d/csharp  /mnt/nfs


                    在ESM8000 console運行Step1_File程序:

                    root@ESM8000#>cd /mnt/nfs

                    root@ESM8000:/mnt/nfs #>./Step1_File/bin/Debug/linux-arm64/publish/Step1_File


                    可在console窗口看到Step1_File運行輸出的結果。


                    Step1_File實現的功能很簡單,本例主要是展示C#程序開發的基本流程,特別是它跨平臺的特性。


                  Step2_Serial


                    串口(ttyS2,115200-8-N-1)接收后回發,并把接收到的字節數等統計信息顯示到console。


                    Python實現


                    在該例程中需要用pyserial的庫文件,ESM8000主板文件系統中已經配置pyserial package,原則上客戶在開發主機上編寫好如下代碼,即可直接在ESM8000上運行。


                  英創Linux主板的Python, C#實例簡介之一.png


                    為了在VS Code編輯環境中對導入的python庫有在線幫助及聯想功能,需在開發主機上也安裝python以及pyserial package等。無論是Linux開發主機還是Windows開發主機,都可以通過pip 命令進行安裝。這里重點介紹一下Windows主機上VS Code安裝方法。


                    首先在Windows主機上安裝python,直接下載安裝即可,這里不再贅述。安裝完成后,啟動VS code界面中就可看到安裝python的版本信息。此時打開Terminal 窗口,運行如下命令:>pip install pyserial


                    C#實現


                    .NET 5的C#程序的一個特點之一,是系統僅包含.NET Core部分,而具體的應用程序再包含所需的特殊功能包,這樣做可使.NET環境保持相對穩定。Step2_Serial對一部串口UART的操作,需要C#的System.IO.Ports類庫,可在VS Code的Terminal窗口(D:\CSharp\Step2_Serial>)完成相關類庫的添加:

                    >dotnet add package System.IO.Ports --version 5.0.0-rc.1.20451.14


                    注意有些類庫的版本,需要與.NET的版本保持一致。具體的實現代碼如下所示:


                  英創Linux主板的Python, C#實例簡介之一.png


                    編譯及發布方法與Step1一樣,這里不再贅述。


                  Step3_Gpio


                    Step3_Gpio把ESM8000主板的GPIO8作為輸入,GPIO9作為輸出。檢測到GPIO8的下降沿,就改變GPIO9的輸出電平。


                    Python實現


                    ESM8000共32路GPIO,Step3_gpio.py例程實現的功能是設置相鄰的兩路GPIO,其中分別為輸出和輸入,測試時將它們短接,通過讀取輸入GPIO的狀態,觀察電平的變化。


                    例程可帶參數,該參數為GPIO的序號,缺省為0。代碼中定義的EM_GPIOs列表實現ESM8000的32位GPIO管腳至iMX8MM系統GPIO的轉換。


                  英創Linux主板的Python, C#實例簡介之一.png


                    C#實現


                    在創建Step3_Gpio工程后,需要添加C#的System.Device.Gpio類庫,才能實現對GPIO的操作。在Linux平臺,System.Device.Gpio類庫依賴于libgpiod庫。添加類庫的操作也是在VS Code的Terminal窗口(D:\CSharp\Step3_Gpio>)完成:

                    dotnet add package System.Device.Gpio --version 1.1.0-prerelease.20276.1


                    代碼中用class Esm8000Gpio類來實現ESM8000的32位GPIO管腳至iMX8MM系統GPIO的轉換。


                  英創Linux主板的Python, C#實例簡介之一.png


                    接著就可以定義相關的對象了,每位GPIO都有自己的Controller,在構造函數中需要與Linux平臺的libgpiod驅動聯系在一起。


                  英創Linux主板的Python, C#實例簡介之一.png


                    對Linux平臺,System.Device.Gpio實現了對輸入事件回調函數響應功能,正好應用到本實例中。主循環檢查事件計數器,并根據結果來驅動GPIO9電平翻轉。


                  英創Linux主板的Python, C#實例簡介之一.png


                    實際應用程序可根據實際需求,在回調函數中實現更多復雜的功能。


                  Step4_Net


                    TCP(Port No = 6000)接收后回發,并把接收到的字節數等統計信息顯示到console。


                    Python實現


                    step4_net.py 直接調用socket函數啟動tcp 服務器模式,代碼如下:


                  英創Linux主板的Python, C#實例簡介之一.png


                    C#實現


                    C#的網絡通訊功能需要System.Net.Sockets類庫,.NET Core已包含該庫,也認可從NuGet下載最新版本的庫。具體的實現代碼如下:


                  英創Linux主板的Python, C#實例簡介之一.png


                    值得一提的是,應用程序是在Socket層面操作網絡接口,與具體的網絡接口形式無關,即網絡接口可以是最基本的RJ45形式的以太網口,也可以是WiFi接口、4G/GPRS無線接口等等。在傳統的WinCE平臺上,由于微軟對WiFi等新的網絡接口支持不夠,限制了CE平臺在這方面的應用,而在Linux平臺上,對各種網絡接口都有很好的支持,為使用C#的客戶遷移到Linux平臺提供了重要的支撐。     

                  中文字幕午夜福利片,海外免费人成视频x8x8日韩,日本片在线看的免费网站,国产亚洲欧美在线观看一区,免费人成视频x8x8 午夜三级a三级三点,五月丁香合缴情在线看,国产一区日韩二区欧美三区,av孕交疯狂孕交,日本三级专区高清,有奶水a片无码 自拍偷区亚洲综合第1页在线观看免费在线视频,自拍 亚洲 欧美 卡通 另类,中文字幕 有码 自拍 欧美免费视频,中文字幕 有码 自拍 欧美 日本精品一区二区三区,免费人成视频网站在线观看18,日本在线不卡二区三区,国产在线精品亚洲一品区,亚洲欧洲自拍拍偷精品网314 日本加勒比无码中文字幕视频在线观看,国产超碰人人做人人爱,久久伊人AV超碰,人人艹人人爱人人摸,人人超碰碰久久 国产日韩久久久久精品影院,国内精品久久久久久影院,亚洲国产日韩欧美高清片,久久亚洲国产精品影院,中文字幕四虎第一页 国产女人久久香蕉精品视,男人靠女人的免费视频,久无码久无码av无码,免费的av网站手机版,亚洲国产欧美国产综合一区
                  久久精品免费一区二区,亚洲加勒比久久88色综合,精品久久久久久中文字幕,中文有码无码人妻在线,欧美人与动牲交 视频 欧洲自拍拍偷无码#精品在线视频,亚洲欧洲自拍拍偷无码,亚洲高清国产拍精品,亚洲愉拍自拍另类图片高清无码种子,精品视频在线观看 久久精品人人槡人妻人人玩,99热国产这里只有精品无卡顿,yy6080午夜理论大片一级,久久国产精品日本波多野结衣,熟妇女的欲乱在线观看 亚洲的天堂AV无码,亚洲Av日韩Aⅴ欧美Av 国内男人插曲女人视频软件,中文字幕42页,亚洲制服 视频在线观看网站,中文字幕乱近親相姦 国产AV福利久久精品can,亚洲久久超碰无码色中文字幕,国产在线精品亚洲第一区香蕉,国产成人无码AV在线观看,中文亚洲成A人片在线观看 综合久久综合爱超碰伊人,欧美高清欧美av片,超碰伊人久久大香线蕉综合,亚洲国内自拍愉拍,日本不卡免费视频新二区 自拍偷区亚洲综合第1页,亚洲AVAV天堂AV在线网,2020国精品产露脸偷拍视频,亚洲欧洲2017无码中文,欧美亚洲色AV大片,看AV女人小便 欧美香蕉爽爽人人爽,激性欧美在线观看,海AV精品导航网址,麻豆国产精品无码视频,免费国产黄网在线视频,久久精品国产99久久 亚洲的天堂AV无码,亚洲Av日韩Aⅴ欧美Av 国内男人插曲女人视频软件,中文字幕42页,亚洲制服 视频在线观看网站,中文字幕乱近親相姦 2012中文字幕在线中文字幕,色成人精品免费视频,日本高清不卡AⅤ免费网站,亚洲日本无码AV一区二区三区,亚洲欧美国产伦综合