日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Raspberry Pi, UPNP(二), Scala

發布時間:2023/12/20 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Raspberry Pi, UPNP(二), Scala 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Raspberry Pi

概述

樹莓派(Raspberry Pi)在極客領域可謂大名鼎鼎,它的官網是:

https://www.raspberrypi.org/

從型號來看,它可以分為三大類型:

1)B型。面向開發者和學生。

2)A型和Zero型。面向批量制造類的客戶。

從技術角度來說,樹莓派雖然優秀,然而有實力制作這樣開發板的公司,沒有一千,也有幾百。但世界范圍內,只有Raspberry Pi和Arduino這兩款開發板取得了成功。

Arduino是一款微控制器,主要用于電子工程領域,比如工業設備、傳感器控制等。程序設計偏單片機風格,價格低廉,計算能力有限。它的官網:

https://www.arduino.cc/

而Raspberry Pi的定位是一個廉價的PC。其計算能力和目前的智能手機相當,但操作系統卻和普通的桌面系統類似,因此,普通的PC應用可以很方便的移植過來。

Raspberry Pi官方OS是Raspbian,這是一個基于Debian的Linux發行版。除此之外,還有幾個Ubuntu定制版。甚至微軟也為此專門推出了Windows 10 IOT,其地址為:

https://developer.microsoft.com/en-us/windows/iot

這一點是很有象征意義的,這表明Raspberry Pi及其社區的影響力,已經到了MS這樣的巨頭也不能無視的地步了。

Raspberry Pi的成功之道

嵌入式開發板這種東西,在國內已經有十多年的歷史。我至今仍然記得,2007年的時候,公司的一套類智能手機的開發板,居然要3000元。所以寶貝的不得了,不相干的人根本沒機會把玩。

從知名度來說,友善之臂和周立功,算是國內開發板賣的比較好的了,但前者日子過得一般,后者的主要業務也轉向工控領域。

那么Raspberry Pi的成功之道是什么呢?我個人總結起來,有以下幾點:

1.把握住了市場對于廉價計算的需求。單片機講究價格便宜,性能夠用就好,而PC追求功能強大。因此,在單片機和PC之間,存在一個巨大的細分市場。這個市場既需要強大的計算能力,也需要便宜的價格。Raspberry Pi很好的滿足了這一點。

2.通用的計算平臺。很多手機開發板的計算能力和Raspberry Pi類似,但為什么Raspberry Pi取得了成功呢?因為,手機OS主要面向普通用戶,對于程序開發不太友好,而Raspberry Pi則更多強調它是一個功能完整的PC。

它使用了普通的桌面Linux,集成了完整的開發環境,對于小程序,甚至可以直接在Raspberry Pi上編譯執行,就和在PC上一樣。

一般的服務器應用,如Apache等,也可以像在PC上那樣安裝運行。這些都使得它的應用場景較手機平臺有了極大的擴展。

而國內的開發板,很多仍然停留在手機開發板的階段,對于通用計算,理解支持都不到位。

3.開放的態度。Raspberry Pi的開放不僅體現在它使用了很多開源軟件,更在于它的軟硬件都是開源的。這樣,也就給了極客群體擴展使用它的機會,反過來又促進了Raspberry Pi的發展。Raspberry Pi和極客群體之間的互動,使得它突破了產品或平臺的限制,而構成了一個有機的生態系統。

反觀國內的開發板生產商,或曰“解決方案提供商”,實際上陷入了一個怪圈。它們為了推銷自己的硬件或者軟件,而有意對某些部分閉源。但實際上,生態那么差,你就算免費我都懶得用。因為,嵌入式平臺都是專有平臺,需要程序員投入額外的精力,去理解一些離開該平臺就用不到的知識,而這是需要成本的。

Raspberry Pi成立之初的非營利性質,反而幫助它們賺到了這個細分市場中最多的錢,這對于國內眾解決方案提供商,真是一個莫大的諷刺。

4.完善的服務。很多國內廠商提供的所謂服務,無非也就是建個網站,讓人下載一些資料而已。這樣的等級實在太低了。

Raspberry Pi建有專門的軟件倉庫,安裝軟件就和PC上的Ubuntu一樣方便。

這里,我們可以拿友善之臂的Nano PC作為一個對比。

兩者的設計風格和外設接口,基本一致。Nano PC T2的硬件略好于Raspberry Pi 3B,好得不多,價錢也基本相當。

但是,資料、軟件、生態,完全沒得玩啊。你就算再便宜50塊錢,我也會選擇Raspberry Pi。新手絕對不推薦Nano PC!

唯一值得欣慰的是,友善之臂也開始在Github上創建自己的代碼倉庫,并借助了Debian的軟件倉庫,這在一定程度上,挽回了一些劣勢。

卡片PC

常見的卡片PC,除了Raspberry Pi之外,還有Intel的NUC。但是后者除了體積小之外,售價和普通PC相當,不適合當玩具。

Raspberry Pi的成功案例(不定期更新)

http://dcaoyuan.github.io/papers/rpi_cluster/component.html

這是一個Raspberry Pi的集群。

Raspberry Pi 3B初體驗

采購的Raspberry Pi 3B,今天(2016.5.10)終于到貨了,比想象中要小巧一些。這里需要注意的是,35美元(或者類似價錢的RMB),除了板子之外,什么都沒有。你必須自己準備電源和TF卡,好在這些東西都是標準件,并不難找。

安裝OS

官方推薦使用NOOBS,但其實直接燒鏡像更簡單快捷。這里我使用的是Raspbian OS。

登錄Raspberry Pi

1.串口登錄

Raspberry Pi 3B的GPIO接口圖如下所示:

其中,串口和樹莓派的連線方式如下:

串口樹莓派
VCC+3.3V
RXTXD
TXRXD
GNDGround

這里我犯了一個錯誤,將VCC接到+5V上,差點將串口轉接板燒掉。用戶如果無法判斷自己串口設備的VCC,建議先接上+3.3V試試。

然而這樣做之后,串口并不穩定,無法順利登錄設備。原因在于:

http://ju.outofmemory.cn/entry/245310

2.網口登錄

Raspberry Pi默認支持SSH登錄。這里我使用putty作為SSH客戶端。

首先,用網線將Pi和PC連接到同一個局域網中。然后進入路由器的界面,如下圖:

“客戶端列表”如下圖:

其中raspberrypi就是Pi的hostname。

選擇對應的IP地址,進行SSH登錄。Pi的默認用戶名是pi,密碼為raspberry。需要注意的是,putty首次登錄不會成功,需要關閉會話,并再次登錄,才能獲得相關密鑰,并登錄成功。

3.遠程桌面登錄

VNC或者MS遠程桌面都能登錄Pi,這里使用VNC協議。

Raspbian和Ubuntu一樣,使用apt-get來安裝軟件包。但它默認使用的是國外的軟件源,因此速度很慢。

我們首先在下面的網頁中,查找適合的鏡像軟件源:

http://www.raspbian.org/RaspbianMirrors

國內的話,一般推薦清華和中科大的源。東軟的源,雖然支持的開源軟件數量最多,但速度完全不敢恭維。

http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/

http://mirrors.ustc.edu.cn/raspbian/raspbian/

修改源的方法:

sudo vi /etc/apt/sources.list

安裝TightVncServer:

sudo apt-get install tightvncserver

首次運行tightvncserver,會讓你設置遠程訪問的密碼。

相應的客戶端下載地址:

http://www.tightvnc.com/download.php

打開TightVncViewer,在Remote Host中填入Raspberry Pi的IP地址,注意IP后需要加“:1”,否則連接不上。

文件傳輸

Raspberry Pi默認支持SFTP協議。打開FileZilla,主機一欄填寫:

sftp://192.168.1.102 (換成您的樹莓派的IP地址。前面的sftp://一定要加)

填入登錄的用戶名、密碼,點擊快速連接即可。

擴展系統分區

官方鏡像中,root分區只有2~3GB,這個對于較大的TF卡來說,是一個很大的浪費。因此,需要擴展系統分區。

方法一如下圖所示:

方法二:

sudo raspi-config

VNC進階教程

開機自動啟動

https://github.com/antkillerfarm/antkillerfarm_crazy/blob/master/other/vncserver

將上面的腳本放到/etc/init.d/vncserver中。

然后執行以下命令:

sudo chmod +x /etc/init.d/vncserver

sudo update-rc.d vncserver defaults

sudo service vncserver start

調整分辨率

vncserver -geometry 1440x900 :1

并不是所有的分辨率Pi都支持。Pi的默認分辨率是800x600,其他支持的分辨率還有1440x900。(不全,有興趣的自己慢慢試)

修改hostname

默認的hostname是raspberrypi。將/etc/hostname和/etc/hosts中的相應字段,改成你想要的名字,保存重啟即可。

UPNP(二)

upnp-inspector

upnp-inspector是一個局域網內的UPNP協議的嗅探分析器。可充當DMC,推送多媒體數據到相關DLNA設備。安裝方法如下:

sudo apt-get install upnp-inspector

upnp-inspector的功能包括:

1.列出局域網內的UPNP設備。

2.列出UPNP設備所支持的UPNP服務。

3.列出UPNP服務所支持的函數,并可發送相關函數。(左鍵雙擊樹狀列表中的函數名即可)

upnp-inspector是coherence的一部分。后者是一個Python語言寫的DLNA框架。它的官網:

http://coherence-project.org/

upnp-inspector的代碼地址:

https://github.com/coherence-project/UPnP-Inspector

libmcupnp

libmcupnp是一個基于libupnp的Control Point實現,用C++寫的。從代碼來看,明顯參考了libupnp里的demo示例。

https://sourceforge.net/projects/libmcupnp/

gupnp

這是GNOME項目的upnp庫,使用libsoup處理HTTP,libxml處理XML。它的官網是:

https://wiki.gnome.org/Projects/GUPnP

Scala

官網:

http://www.scala-lang.org/

教程:

http://www.runoob.com/scala/scala-tutorial.html

sbt

sbt是scala的構建工具,其作用類似于Java的Ant和Maven。

官網:

http://www.scala-sbt.org/

教程:

https://github.com/CSUG/real_world_scala/blob/master/02_sbt.markdown

安裝

echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823 sudo apt-get update sudo apt-get install sbt

參見:

http://www.scala-sbt.org/release/docs/Installing-sbt-on-Linux.html

常用命令

sbt有一個和scala類似的命令行交互界面,可以輸入相關的命令。其中常用的有:

  • compile

  • package

  • run

GUI

scala的GUI方案和Java完全一致,只要Java能用的GUI,scala都能用。這里僅以JavaFX為例討論scala的GUI開發。

方法一:采用一般的scala調用Java的方式。參見:

http://alvinalexander.com/scala/scala-javafx-hello-world-example

正如上面網頁指出的,這里的main函數實際上是有一定技巧在里面的,寫起來并不簡潔,而且代碼風格更像是Java,而不是scala。

方法二:ScalaFX

ScalaFX是對JavaFX的封裝,風格更接近于scala。

官網:

http://www.scalafx.org/

sbt支持:

libraryDependencies += "org.scalafx" %% "scalafx" % "8.0.92-R10"

總結

以上是生活随笔為你收集整理的Raspberry Pi, UPNP(二), Scala的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。