91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣通過USB進(jìn)行Arduino Python通信

454398 ? 來源:wv ? 2019-10-24 11:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

第1步:計(jì)算機(jī)環(huán)境

在計(jì)算機(jī)方面,我們將使用一個(gè)稱為PySerial的Python模塊。巧合的是,PySerial允許通過Python使用串行連接。在Windows上安裝PySerial是一個(gè)非常簡單的過程。 注意:此“假設(shè)”假設(shè)您已安裝Python 2. *!如果您不這樣做,PySerial仍然可以使用,但是您可能需要稍微更改代碼以適應(yīng)新標(biāo)準(zhǔn)。

要在Windows上安裝,只需訪問PySerial的下載頁面,下載Windows二進(jìn)制文件并運(yùn)行它(在撰寫本文時(shí)為pyserial-2.7.win32.exe)。然后,通過打開新的Python解釋器實(shí)例并運(yùn)行以下命令來測試安裝:

import serial

步驟2:初始連接

要從Python啟動(dòng)與Arduino的連接,我們首先必須確定Arduino處于哪個(gè) COM端口。幸運(yùn)的是,Ardunio編程環(huán)境使此任務(wù)變得簡單。

只需查看Arduino IDE的右下角,您將看到一些包含COM端口號(hào)的文本。我們將使用它來啟動(dòng)我們的Python串行連接,如下所示:

arduino = serial.Serial(‘COM1’, 115200, timeout=.1)

上面的代碼將在“ COM1”上使用“ 115200”波特創(chuàng)建一個(gè)名為“ ardunio”的新串行對(duì)象,速率和.1秒超時(shí)。保持選定的波特率非常重要,因?yàn)樗仨毰cArdiuno端的波特率完全匹配。

第3步:Ardiuno與Python的通信

在Ardunio和Python之間進(jìn)行通信比通過其他方式更容易。首先,我們需要一些代碼來啟動(dòng)Ardunio的串行連接,并傳遞一條消息。我們可以使用Arduino的Serial.write()函數(shù)來做到這一點(diǎn),就像這樣:

void setup() {

Serial.begin(115200); // use the same baud-rate as the python side

}

void loop() {

Serial.println(“Hello world from Ardunio!”); // write a string

delay(1000);

}

這段代碼將編寫一個(gè)“來自Ardunio的Hello world!”。每秒一次連接到串行連接。現(xiàn)在,我們將構(gòu)建一個(gè)Python腳本,該腳本能夠接收這些消息,并根據(jù)需要對(duì)其進(jìn)行處理。首先,我們必須像上一頁一樣啟動(dòng)連接,然后創(chuàng)建一個(gè)循環(huán),該循環(huán)從流中獲取當(dāng)前信息,并將其打印到控制臺(tái)。

import serial

arduino = serial.Serial(‘COM1’, 115200, timeout=.1)

while True:

data = arduino.readline()[:-2] #the last bit gets rid of the new-line chars

if data:

print data

請(qǐng)注意,在這種情況下,readline()處于阻塞狀態(tài),因此它將等待直到新行完全通過串行緩沖區(qū)為止。通常,readline()會(huì)占據(jù)空白行,因此我放入了if語句來檢查數(shù)據(jù)是否實(shí)際包含任何內(nèi)容。如果您想更精確地獲取非阻塞數(shù)據(jù),則可以在Arduino端使用read()并使用Serial.write()(用于字節(jié))或Serial.print()(用于ASCII字符),但是您需要

第4步:Python與Arduino通訊

這一步有點(diǎn)難,因?yàn)檫@需要我們?cè)谑挛锏腁rduino方面解析數(shù)據(jù)。為了幫助加快速度,我繼續(xù)編寫了一個(gè)簡單的循環(huán),該循環(huán)從Serial緩沖區(qū)中獲取當(dāng)前數(shù)據(jù),并創(chuàng)建一個(gè)以Null結(jié)尾的字符串(C字符串),然后將其傳遞回Serial連接。您可以使用此技術(shù)來編寫實(shí)際的解析器,方法是指定自己的數(shù)據(jù)包前綴和后綴,然后在串行緩沖區(qū)中掃描這些內(nèi)容,并相應(yīng)地創(chuàng)建字符串。

void setup() {

Serial.begin();

}

void loop() {

if(Serial.available() 》 0) {

char data = Serial.read();

char str[2];

str[0] = data;

str[1] = ‘’;

Serial.print(str);

}

}

現(xiàn)在我們可以編寫一個(gè)簡單的腳本,將數(shù)據(jù)從Python發(fā)送到Arduino,然后打印出返回的內(nèi)容。

import serial, time

arduino = serial.Serial(‘COM1’, 115200, timeout=.1)

time.sleep(1) #give the connection a second to settle

arduino.write(“Hello from Python!”)

while True:

data = arduino.readline()

if data:

print data.rstrip(‘ ’) #strip out the new lines for now

# (better to do .read() in the long run for this reason

不難看出如何進(jìn)一步擴(kuò)展此方法以允許兩個(gè)設(shè)備之間進(jìn)行復(fù)雜的通信。我將在以后的“ ible”中介紹這種通信的一個(gè)示例,在該示例中,我將制作一種能夠在任何PC游戲上工作的游戲手柄設(shè)備!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    8190

    瀏覽量

    273057
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4827

    瀏覽量

    86791
  • Arduino
    +關(guān)注

    關(guān)注

    190

    文章

    6498

    瀏覽量

    192225
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    STM32H747 的USB口,燒錄程序就損壞,提示“NO DFU capable USB device available”怎么解決?

    板子抄的 arduino GIGA RI。通過SWD燒錄正常,控制點(diǎn)燈正常。 通過USB連接電腦,正常。如圖一。arduino IED能正常
    發(fā)表于 07-10 08:28

    請(qǐng)問k230可否和樹莓派通過USB-typeC線來通信?

    能否讓一根線接樹莓派的USB接口同時(shí)接到k230的tpyeC接口,同時(shí)供電和通信,將k230視覺獲取的信息傳給樹莓派。這個(gè)能實(shí)現(xiàn)嗎有沒有什么學(xué)習(xí)的例程?求各位大佬教教 你好,可以讓樹莓派做usb主機(jī),230做從機(jī),
    發(fā)表于 04-28 08:25

    有沒有什么方案能實(shí)現(xiàn)直接用matlab或python調(diào)用D4100_usb.dll?

    .dll這個(gè)動(dòng)態(tài)鏈接庫編寫程序控制DMD,我分別嘗試用C++,matlab,Java和python使用D4100_usb.dll進(jìn)行編程,但只有用C++的時(shí)候可以正常使用,原因很可能是D4100_
    發(fā)表于 02-27 06:59

    EE-213:Blackfin處理器通過異步存儲(chǔ)器接口進(jìn)行主機(jī)通信

    電子發(fā)燒友網(wǎng)站提供《EE-213:Blackfin處理器通過異步存儲(chǔ)器接口進(jìn)行主機(jī)通信.pdf》資料免費(fèi)下載
    發(fā)表于 01-05 10:09 ?0次下載
    EE-213:Blackfin處理器<b class='flag-5'>通過</b>異步存儲(chǔ)器接口<b class='flag-5'>進(jìn)行</b>主機(jī)<b class='flag-5'>通信</b>

    如何使用Arduino實(shí)現(xiàn)CAN總線通信

    CAN(Controller Area Network)總線是一種常用于汽車和工業(yè)控制系統(tǒng)的串行通信協(xié)議,以其高可靠性和實(shí)時(shí)性而聞名。Arduino,作為一種流行的開源微控制器平臺(tái),可以通過附加
    的頭像 發(fā)表于 12-23 09:06 ?1950次閱讀

    基于Arduino的串口通信項(xiàng)目

    、Arduino Mega等。 USB數(shù)據(jù)線 :用于將Arduino開發(fā)板連接到計(jì)算機(jī)。 串口設(shè)備 :可以是另一個(gè)Arduino開發(fā)板、傳感器模塊、執(zhí)行器等,只要它支持串口
    的頭像 發(fā)表于 11-22 09:24 ?2199次閱讀

    使用Python進(jìn)行串口通信的案例

    當(dāng)然!以下是一個(gè)使用Python進(jìn)行串口通信的簡單示例。這個(gè)示例展示了如何配置串口、發(fā)送數(shù)據(jù)以及接收數(shù)據(jù)。我們將使用 pyserial 庫,這是一個(gè)非常流行的用于串口通信
    的頭像 發(fā)表于 11-22 09:11 ?1474次閱讀

    如何使用Arduino實(shí)現(xiàn)CAN總線通信

    開源硬件平臺(tái),通過添加CAN總線模塊,也可以實(shí)現(xiàn)CAN通信。 硬件準(zhǔn)備 Arduino開發(fā)板 :可以選擇Arduino Uno、Mega等型號(hào)。 CAN總線模塊 :如MCP2515或M
    的頭像 發(fā)表于 11-12 10:09 ?2732次閱讀

    USB2ANY控制lmx2595evm,是否可以通過python或者FPGA直接與evm通信來控制?

    USB2ANY控制lmx2595evm,寫入寄存器值的常用方法是使用TICS Pro軟件控制,請(qǐng)問我是否可以通過python或者FPGA直接與evm通信來控制
    發(fā)表于 11-08 16:26

    如何用python控制usb2any?

    我想用python控制usb2any,在網(wǎng)上搜索后得到的關(guān)于usb2any的資料很少,是否有官方的usb2any函數(shù)庫?
    發(fā)表于 11-08 14:36

    使用Python進(jìn)行圖像處理

    下面是一個(gè)關(guān)于使用Python在幾行代碼中分析城市輪廓線的快速教程。
    的頭像 發(fā)表于 11-07 10:14 ?591次閱讀
    使用<b class='flag-5'>Python</b><b class='flag-5'>進(jìn)行</b>圖像處理

    PCM2912A通過USB得到的數(shù)據(jù)怎樣換算成對(duì)應(yīng)的電壓值?

    想請(qǐng)教一下關(guān)于PCM2912A通過USB得到的數(shù)據(jù)怎樣換算成對(duì)應(yīng)的電壓值,比如讀到的值是540,16bit采樣,那么換算成電壓計(jì)算公式為:540/65535*3.3,是這樣計(jì)算的嗎?
    發(fā)表于 10-23 07:49

    如何用python控制usb2any?

    我想用python控制usb2any,在網(wǎng)上搜索后得到的關(guān)于usb2any的資料很少,是否有官方的usb2any函數(shù)庫?
    發(fā)表于 09-27 06:44

    arduino(2)--通過ESP8266模塊實(shí)現(xiàn)串口接收數(shù)據(jù),使用TCP協(xié)議進(jìn)行局域網(wǎng)通信

    由于調(diào)試機(jī)器需要打印數(shù)據(jù)來查看程序是否正常運(yùn)行,將MCU的串口線接入到電腦需要很長的延長線,而且機(jī)器的移動(dòng)會(huì)變的很不方便,故使用8266進(jìn)行局域網(wǎng)通信,通過wifi將數(shù)據(jù)直接發(fā)送到電腦,這樣調(diào)試
    發(fā)表于 09-06 16:34

    使用Python進(jìn)行Ping測試

    )請(qǐng)求包,然后等待目標(biāo)主機(jī)返回響應(yīng)包,從而測量網(wǎng)絡(luò)的延遲和丟包情況。隨著Python編程語言的廣泛應(yīng)用,越來越多的網(wǎng)絡(luò)工程師開始使用Python進(jìn)行自動(dòng)化網(wǎng)絡(luò)測試和管理任務(wù)。本篇文章將詳細(xì)介紹如何使用
    的頭像 發(fā)表于 08-12 17:56 ?1015次閱讀
    使用<b class='flag-5'>Python</b><b class='flag-5'>進(jìn)行</b>Ping測試
    主站蜘蛛池模板: 黄色视奸 | 性xxxxhd高清 | 黄色录像大全 | 国产精品青草久久久久福利99 | 久久婷婷一区二区三区 | 情趣店上班h系列小说 | 国产叼嘿视频网站在线观看 | 在线小视频你懂的 | 夜夜爱夜夜做 | 91三级在线观看 | 伊人黄 | 91插插视频 | 亚洲天堂999| 91色在线视频 | 男女激情做爰叫床声视频偷拍 | 一个综合色 | 在线免费看片a | 中文字幕一区二区三区在线播放 | 人碰人操| 欧美 变态 另类 人妖班 | 亚洲娇小性色xxxx | 污视频18高清在线观看 | 深爱五月婷婷 | 四虎影院一区二区 | 久久精品夜夜夜夜夜久久 | 国产精品福利在线观看免费不卡 | 97人人做人人添人人爱 | 欧美怡红院免费全部视频 | 一级日本高清视频免费观看 | seetube18日本第一次 | 亚洲二区视频 | 成人欧美精品久久久久影院 | 成年美女黄网站色大免费视频 | 欧美伊人久久大香线蕉综合69 | 奇米社区 | 天天在线看片 | 狼色网站 | 一本一本大道香蕉久在线精品 | 永久在线 | 午夜日韩精品 | 亚洲一区欧美一区 |