溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

.Net?Core跨平臺應(yīng)用開發(fā)串口有哪些

發(fā)布時間:2022-01-15 16:10:55 來源:億速云 閱讀:158 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“.Net Core跨平臺應(yīng)用開發(fā)串口有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“.Net Core跨平臺應(yīng)用開發(fā)串口有哪些”吧!

    引言

    為了驗證采用dotnet core技術(shù)開發(fā)的物聯(lián)網(wǎng)設(shè)備數(shù)據(jù)采集接入服務(wù)應(yīng)用是否能在高性價比的linux嵌入式平臺運行,針對dotnet core應(yīng)用程序進行嵌入式linux環(huán)境的發(fā)布部署運行驗證研究。

    硬件環(huán)境

    硬件系統(tǒng)經(jīng)過對比篩選,選用了友善之臂出品的NanoPC-T3 Plus。該控制板為掌上型嵌入式Linux系統(tǒng)迷你PC,采用64位三星arm CPU,具有完善的硬件接口和驅(qū)動支持,大于1G的內(nèi)存和8G以上的eMMC閃存,具有較高的性能價格比。

    .Net?Core跨平臺應(yīng)用開發(fā)串口有哪些

    • NanoPC-T3 Plus是友善之臂專門針對企業(yè)用戶而設(shè)計,它采用三星八核Cortex -A53架構(gòu)的S5P6818處理器,動態(tài)運行主頻400M-1.4GHz。NanoPC-T3 Plus配備了16GB的eMMC、音頻接口、視頻輸入/輸出接口等;并且集成了WiFi和藍牙,增加千兆以太網(wǎng)和電源管理功能,板載陶瓷天線,帶串口調(diào)試功能。為適應(yīng)工業(yè)客戶需要,NanoPC-T3 Plus加裝了標配的散熱片,以解決芯片發(fā)熱問題。

    • NanoPC-T3 Plus帶兩路視頻輸入,支持DVP 攝像頭及MIPI-CSI攝像頭,并且?guī)穆芬曨l輸出,分別為HDMI 1.4A接口、LVDS接口、并行RGB-LCD接口、MIPI-DSI接口。并且支持RTC,板載備份電池接口,引出四個USB接口(其中三個是標準A型接口, 另外一個是2.54mm排母)等。

    •  NanoPC-T3 Plus)流暢運行Android5.1、Debian、UbuntuCore+Qt等系統(tǒng),內(nèi)核驅(qū)動源碼完全開源,接口豐富。

    硬件資源特性

    • CPU: S5P6818, 運行主頻1.4GHz

    • 電源管理: 采用一顆ARM® Cortex®-M0單片機做電源管理, 支持動態(tài)調(diào)壓, 軟件關(guān)機和定時開機等功能

    • 內(nèi)存: 2GB 32bit DDR3 RAM

    • 存儲: 1 x microSD 卡槽

    • 網(wǎng)絡(luò): Gbit Ethernet(RTL8211E)

    • Wireless:802.11 b/g/n

    • Bluetooth: 4.0 dual mode

    • 天線: Wi-Fi和藍牙共用, 板載陶瓷天線, 同時提供IPX接口

    • eMMC: 16GB

    • 視頻輸入:DVP Camera/MIPI-CSI(雙攝像頭口)

    • 視頻輸出:HDMI/LVDS/并行RGB-LCD/MIPI-DSI(四個視頻輸出接口)

    • 音頻:3.5mm耳機座/Via HDMI

    • 麥克風: 板載麥克風

    • USB Host: 4 x USB 2.0 Host , 其中三個是標準A型接口, 另外一個是2.54mm排母

    • Micro USB: 1 x USB 2.0 Client

    • LCD接口: 45pin, 0.5mm間距FPC貼片座,支持全彩TFT LCD (RGB:8-8-8)

    • HDMI: HDMI 1.4a, Type A型口,1080P高清顯示

    • DVP Camera接口: 24pin, 0.5mm間距,F(xiàn)PC貼片豎座

    • GPIO擴展接口: 30 Pin2.54mm排母, 包含4個UART, 1路I2C, 1路SPI, 3路PWM,9個GPIO

    • I2S/USB: 2.54mm間距排母

    • 調(diào)試串口: 2.54mm間距排針

    • 按鍵: 電源按鍵, 復(fù)位按鍵, 啟動選擇按鍵各一個

    • LED: 1 x power LED and 1 x system LED

    • CPU溫度檢測: CPU內(nèi)部集成溫度傳感器

    • RTC: 支持RTC, 板上有備份電池接口

    • 散熱片螺絲孔:能加螺絲固定的散熱片

    • 供電: DC 5V/3A

    • PCB Size:100 x 64mm,八層,沉金工藝

    • 溫度工作范圍: -40℃ to 80℃

    為避免廣告嫌宜,不過多對設(shè)備進行說明(好象難以避免呵,如有此方面問題,請管理員協(xié)助進行和諧呵)

    在此給出設(shè)備的wiki地址:http://wiki.friendlyarm.com/wiki/index.php/NanoPC-T3_Plus/zh

    支持的系統(tǒng)平臺

    廠家提供的系統(tǒng)映像文件支持以下版本系統(tǒng)

    • lubuntu-desktop-xenial-4.4-armhf(基于ubuntu16.04的LUbuntu桌面版,32位arm系統(tǒng))

    • friendlycore-xenial-4.4-armhf(基于ubuntu16.04的FriendlyCore系統(tǒng),32位arm系統(tǒng))

    • friendlycore-xenial-4.4-arm64(基于ubuntu16.04的FriendlyCore系統(tǒng),64位arm系統(tǒng))

    • Android5.1系統(tǒng)

    FriendlyCore,是一個沒有X-windows環(huán)境,基于Ubuntu core構(gòu)建的系統(tǒng),使用Qt-Embedded作為圖形界面的輕量級系統(tǒng),兼容Ubuntu系統(tǒng)軟件源,非常適合于企業(yè)用戶用作產(chǎn)品的基礎(chǔ)OS。

    系統(tǒng)除了保留Ubuntu Core的特性以外,還包括以下特性:

    • 支持電容和電阻觸摸屏

    • 支持WiFi連接

    • 支持以太網(wǎng)連接

    • 支持藍牙,已預(yù)裝bluez等相關(guān)軟件包

    • 支持音頻播放

    • 支持Qt 5.10.0 EGLES和OpenGL ES1.1/2.0

    系統(tǒng)平臺

    .NET Core支持的Linux版本

    https://docs.microsoft.com/zh-cn/dotnet/core/linux-prerequisites?tabs=netcore2x

    .NET Core 2.x 將 Linux 視為一個操作系統(tǒng)。 支持的 Linux 分發(fā)都對應(yīng)有一個 Linux 內(nèi)部版本(根據(jù)芯片體系結(jié)構(gòu))。

    以下 Linux 發(fā)行版本/版本支持 NET Core 2.x:

    • Red Hat Enterprise Linux 7,6 - 64 位(x86_64 或 amd64)

    • CentOS 7 - 64 位(x86_64 或 amd64)

    • Oracle Linux 7 - 64 位(x86_64 或 amd64)

    • Fedora 28、27 - 64 位(x86_64 或 amd64)

    • Debian 9(64 位,arm32)、8.7 或更高版本 - 64 位(x86_64 或 amd64)

    • Ubuntu 18.04(64 位,arm32)、16.04、14.04 - 64 位(x86_64 或 amd64)

    • Linux Mint 18、17 - 64 位(x86_64 或 amd64)

    • openSUSE 42.3 或更高版本 - 64 位(x86_64 或 amd64)

    • SUSE Enterprise Linux (SLES) 12 Service Pack 2 或更高版本 - 64 位(x86_64 或 amd64)

    • Alpine Linux 3.7 或更高版本 - 64 位(x86_64 或 amd64)

    系統(tǒng)平臺選擇

    根據(jù).NET Core 2.x對Linux系統(tǒng)的支持,選擇friendlycore-xenial-4.4-arm64作為系統(tǒng)運行平臺。

    下載廠家提供的系統(tǒng)映像文件,對NanoPC-T3/Plus進行系統(tǒng)燒寫,方法詳見WIKI教程.

    燒寫主要步驟:

    • 1、下載廠家提供的映像文件和燒寫工具win32diskimager(wiki中提供了下載鏈接)

    • 2、準備一張tf卡,格式化為一個分區(qū)(FAT32)

    • 3、運行win32diskimager軟件,選擇映像文件,選擇tf卡對應(yīng)的分區(qū),點擊寫入

    • 4、燒寫完成

    • 5、將tf卡插入卡座,按信boot鍵給控制板上電(需外接顯示器和鍵盤、鼠標)

    • 6、根據(jù)屏幕提示,將系統(tǒng)安裝至eMMC閃存。

    連接嵌入式Linux系統(tǒng)

    FriendlyCore系統(tǒng)默認支持多種連接方式,可通過外接輸入、輸出設(shè)備(鍵盤/鼠標、顯示器)進行連接,也可以通過串口終端進行連接,也支持通過網(wǎng)絡(luò),使用ssh終端方式進行連接。

    FriendlyCore系統(tǒng)默認配置了兩個用戶帳戶

    普通用戶:

    用戶名: pi

    密碼: pi

    Root用戶:

    用戶名: root

    密碼: fa

    系統(tǒng)開機默認會以 pi 用戶自動登錄,你可以使用 sudo npi-config 命令取消自動登錄。

    物理連接

    NanoPC具有HDMI、TFT顯示接口和USB接口,可以直接連接顯示器、鍵盤/鼠標進行操作。

    .Net?Core跨平臺應(yīng)用開發(fā)串口有哪些

    串口連接

    NanoPC默認支持調(diào)試串口做為終端。

    .Net?Core跨平臺應(yīng)用開發(fā)串口有哪些

    通過USB轉(zhuǎn)TTL串口的串口模塊進行連接。默認通訊參數(shù):115200,N,8,1

    軟件可使用任意串口終端工具,如SecureCRT或Windows系統(tǒng)自帶超級終端。

    .Net?Core跨平臺應(yīng)用開發(fā)串口有哪些

    .Net?Core跨平臺應(yīng)用開發(fā)串口有哪些

    網(wǎng)絡(luò)連接

    可以通SSH工具進行網(wǎng)絡(luò)連接,通過網(wǎng)絡(luò)終端的方式訪問。(Win10系統(tǒng)自帶)

    FriendlyCore系統(tǒng)網(wǎng)絡(luò)配置默認為自動獲取IP地址。通過網(wǎng)絡(luò)連接設(shè)備,需要確定設(shè)備的IP地址。

    初始IP地址可以通在串口終端模式下輸入ifconfig命令查看,或通過網(wǎng)絡(luò)掃描確定。

    確定設(shè)備的IP地址后,可以通ssh命令進行終端連接

    本次實驗中,我們設(shè)備的IP地址為172.16.93.74,通過如下命令進行網(wǎng)絡(luò)終端接入:

    ssh pi@172.16.93.74

    根據(jù)提示輸入密碼后,即可成功登入。

    .Net?Core跨平臺應(yīng)用開發(fā)串口有哪些

    .NET Core跨平臺驗證

    由于后期主要需要使用的程序功能為網(wǎng)絡(luò)通訊和串口通訊,我們主要針對目標嵌入式linux系統(tǒng)下的網(wǎng)絡(luò)和串口通訊進行驗證。

    本次實驗中,我們先對串口通訊進行驗證。

    編寫一個netcore2.x的控制臺程序,程序?qū)崿F(xiàn)系統(tǒng)信息顯示,串口資源列舉,串口選擇,串口打開/關(guān)閉,串口接收顯示和串口定時發(fā)送測試數(shù)據(jù)功能。

    驗證程序設(shè)計

    采用SerialPort類進行串口測試功能實現(xiàn)(netcore項目需通過Nuget安裝SerailPort庫)

    實現(xiàn)以下功能:

    • 顯示系統(tǒng)平臺信息

    • 串口資源列舉,

    • 串口選擇,

    • 串口打開

    • 串口關(guān)閉

    • 串口接收/數(shù)據(jù)顯示

    • 串口定時發(fā)送測試數(shù)據(jù)

    程序較為簡單,在此貼出部分功能代碼:

    顯示系統(tǒng)平臺信息

    .Net?Core跨平臺應(yīng)用開發(fā)串口有哪些

    串口資源列舉

    .Net?Core跨平臺應(yīng)用開發(fā)串口有哪些

    串口測試

    .Net?Core跨平臺應(yīng)用開發(fā)串口有哪些

    編譯程序,在window下測試程序通過。

    .Net?Core跨平臺應(yīng)用開發(fā)串口有哪些

    跨平臺發(fā)布

    因目標平臺為arm64嵌入式linux系統(tǒng),采用以下方式進行程序發(fā)布:

    在命令行窗口,切換到項目文件夾,運行如下命令:

    dotnetpublish-rlinux-arm64-cRelease

    通過以上命令,得到生成的目標平臺的發(fā)布包,程序文件及相關(guān).netcore運行時依賴均被發(fā)布到項目release\netcoreapp2.2\linux-arm64\publish文件夾中。

    遠程部署

    采用scp命令,將發(fā)布文件復(fù)制到目標機器

    在windows(win10)系統(tǒng)中,打開控制臺窗口,輸入scp命令,命令格式如下:

    scp –r d:\ubuntu\publish\ pi@172.16.93.74:/home/pi/.

    根據(jù)提示輸入用戶密碼,完成文件夾的復(fù)制。

    在ssh終端窗口,切換到程序文件夾

    cd /home/pi/publish

    設(shè)置程序執(zhí)行權(quán)限:

    chmod 777 ./HelloArm # HelloArm為測試程序文件名

    輸入./ HelloArm運行程序

    Linux環(huán)境運行.Net Core程序

    在普通用戶pi中運行程序

    .Net?Core跨平臺應(yīng)用開發(fā)串口有哪些

    程序顯示了系統(tǒng)環(huán)境信息

    由于程序啟動后調(diào)用了SerialPort.GetPortNames方法,程序未能按預(yù)期執(zhí)行,出現(xiàn)如下信息:

    .Net?Core跨平臺應(yīng)用開發(fā)串口有哪些

    提示信息表明SerialPort類庫僅支持Windows系統(tǒng)平臺,不支持跨平臺。

    至此,.net core程序跨平臺在linux系統(tǒng)運行成功,但串口類庫不支持跨平臺。

    第三方串口類庫

    為解決串口類支持問題,查找資料,發(fā)現(xiàn)github上有一個開源SerialPortStream類庫支持netcore,能夠支持Linux系統(tǒng)。

    https://github.com/jcurl/SerialPortStream

    該類庫支持windows系統(tǒng)和Linux系統(tǒng),但在Linux系統(tǒng)下運行,需要額外編譯目標平臺支持庫并進行相關(guān)環(huán)境配置。

    Linux串口類庫編譯

    You first need to compile the support library libnserial.so for your platform. To do that, you'll need a compiler (e.g. GCC 4.8 or later) and cmake.

    在目標系統(tǒng)中(FriendlyCore),安裝GCC編譯器和cmake

    首先確定網(wǎng)絡(luò)正常連接,能夠訪問互聯(lián)網(wǎng)(需要良好的網(wǎng)絡(luò)環(huán)境)。

    執(zhí)行如下命令:

    sudo apt-get update

    .Net?Core跨平臺應(yīng)用開發(fā)串口有哪些

    安裝更新GCC

    sudo apt-get install gcc

    安裝cmake

    sudo apt-get install cmake

    .Net?Core跨平臺應(yīng)用開發(fā)串口有哪些

    確保gcc和cmake安裝正常??刹捎妹畈榭窗惭b情況

    gcc --version

    cmake --version

    After cloning the repository, execute the following:

    $ git clone https://github.com/jcurl/serialportstream.git

    $ cd serialportstream/dll/serialunix

    $ ./build.sh

    根據(jù)上面的命令,完成類庫的源碼克隆和編譯。

    注:類庫linux依賴庫僅需在同一目標平臺編譯一次,其他相同目標平臺,復(fù)制并配置依賴庫到目標系統(tǒng)即可。

    環(huán)境變量配置

    Binaries are built and put in the bin folder from where you ran the build script. You can add a reference to LD_LIBRARY_PATH to the library:

    $ export LD_LIBRARY_PATH=`pwd`/bin/usr/local/lib:$LD_LIBRARY_PATH

    執(zhí)行上述命令,配置類庫目標到環(huán)境變量(上述命令為臨時環(huán)境變量配置,僅當前shell有效)

    配置全局環(huán)境變量的方法:

    vi /etc/profile

    在文件的最后一行,增加環(huán)境變量LD_LIBRARY_PATH的配置

    保存退出后,執(zhí)行source /etc/profile 刷新環(huán)境變量

    注:vi相關(guān)操作,請自行百度或必應(yīng)。

    Linux串口測試

    將測試驗證程序中的SerialPort類更換為SerialPortStream類庫(方法、屬性基本兼容),進行適當?shù)恼{(diào)整,在windows系統(tǒng)上編譯運行,通過。

    重新發(fā)布Linux系統(tǒng)運行版本,進行l(wèi)inux系統(tǒng)部署。

    采用普通用戶pi登錄

    如環(huán)境變量未有效配置,串口類無法正常執(zhí)行,程序執(zhí)行到串口方法調(diào)用處停止。

    .Net?Core跨平臺應(yīng)用開發(fā)串口有哪些

    按Ctrl+C終止程序。

    配置好串口類庫所需環(huán)境變量,重新運行程序,程序正常運行。

    如下圖,程序啟動,列舉出系統(tǒng)有效串口,如下圖所示:

    .Net?Core跨平臺應(yīng)用開發(fā)串口有哪些

    由于pi用戶帳戶權(quán)限原因,程序只顯示了/dev/ttySAC0一個串口,此串口為系統(tǒng)調(diào)試終端輸出串口。

    切換到系統(tǒng)超級用戶

    su root

    根據(jù)提示輸入密碼:fa

    切換到程序目錄,執(zhí)行測試程序 ./publish/HelloArm,出現(xiàn)如下界面:

    .Net?Core跨平臺應(yīng)用開發(fā)串口有哪些

    在超級用戶下,程序列舉出了5個串口。

    通過操作命令,打開指定的串口,開啟接收事件及定時周期發(fā)送數(shù)據(jù),連接電腦串口(目前大部分電腦已不再提供串口,本實驗通過USB轉(zhuǎn)串口模塊進行連接),通過PC端的串口工具軟件同Linux迷你PC主機進行通訊,收發(fā)通訊正常。

    配置程序開機運行

    在root用戶下,配置/etc/rc.local文件,將程序添加到系統(tǒng)開機運行

    vi /etc/rc.local

    在exit 0之前增加一行

    /home/pi/publish/HelloArm

    保存退出,重啟系統(tǒng)

    reboot

    重啟系統(tǒng)后,調(diào)試串口終端界面中,可以看到程序運行的輸出信息,至此,程序配置完成,開機自動運行成功。

    感謝各位的閱讀,以上就是“.Net Core跨平臺應(yīng)用開發(fā)串口有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對.Net Core跨平臺應(yīng)用開發(fā)串口有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI