在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

如何創(chuàng)建可以通過(guò)USB OTG電纜與Arduino通信的android應(yīng)用程序

454398 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-12-11 15:05 ? 次閱讀

步驟1:下載Android Studio

如何創(chuàng)建可以通過(guò)USB OTG電纜與Arduino通信的android應(yīng)用程序

從http://developer.android.com/sdk/index.html獲取android studio

單擊“下載android studio”按鈕開始下載

同意按照條款和條件,您的下載應(yīng)該開始

文件將是exe文件,文件大小將約為gig

步驟2:安裝Android Studio

通過(guò)一些基本的安裝步驟來(lái)安裝exe文件

最后,它將自動(dòng)安裝最新的SDK版本,使其完成。

最后,您將獲得android studio的歡迎屏幕。

第3步:設(shè)置在Android Studio中

在在歡迎屏幕上,您應(yīng)該看到配置按鈕,通過(guò)選擇它,您應(yīng)該進(jìn)入配置頁(yè)面。單擊第一個(gè)選項(xiàng)將是“ SDK管理器”,方法是單擊一個(gè)新窗口,其中將顯示當(dāng)前SDK的詳細(xì)信息。可以選擇“啟動(dòng)獨(dú)立的SDK管理器”,方法是單擊將打開良好的舊SDK管理器,然后您可以根據(jù)需要添加新的SDK工具。

Android studio有一個(gè)用于測(cè)試android代碼的模擬器,但是很遺憾,我們不能在這種情況下使用它,因?yàn)檫@涉及到物理設(shè)備與另一臺(tái)設(shè)備通信。相反,我們可以使用Android手機(jī)本身來(lái)調(diào)試代碼。

由于我們使用的是Android設(shè)備來(lái)調(diào)試代碼,因此我們只需下載該設(shè)備特定版本的“ SDK平臺(tái)”即可,首先了解android手機(jī)的操作系統(tǒng)版本。就我而言,我使用的是具有5.0(棒棒糖)的Samsung note3,因此只需從“ Android 5.0.1(API 21)”下載“ SDK平臺(tái)”就足夠了。

步驟4 :關(guān)于庫(kù)

我用來(lái)進(jìn)行通信的庫(kù)稱為http://www.physicaloid.com/上的physicaloid,該庫(kù)最近更新于2年前最終更新無(wú)法正常工作(至少對(duì)我而言)。因此,在與github存儲(chǔ)庫(kù)中的人討論之后,我設(shè)法獲得了該庫(kù)的舊工作jar文件。

通過(guò)使用該庫(kù),我們不僅可以與Arduino通信,而且可以將已編譯的十六進(jìn)制文件上傳到Arduino,庫(kù)具有內(nèi)置的avrdude功能。

步驟5:在Android Studio中創(chuàng)建新項(xiàng)目

首先,我想制作一個(gè)外觀與Arduino的串行監(jiān)視器窗口相同的應(yīng)用程序。

在android studio的歡迎屏幕上,將有一個(gè)創(chuàng)建新項(xiàng)目的選項(xiàng),選擇“開始一個(gè)新的android studio項(xiàng)目”

在下一頁(yè)中輸入您的項(xiàng)目名稱和位置,然后單擊下一步

在下一頁(yè)中,選擇我們正在為其開發(fā)應(yīng)用程序的平臺(tái),然后選擇正確的手機(jī)版本,然后單擊下一步。

在下一頁(yè)中,默認(rèn)情況下將選擇“空白活動(dòng)”并保持現(xiàn)狀。并在下一頁(yè)上為您的活動(dòng)(您在應(yīng)用程序的主屏幕)命名。

然后單擊完成,新創(chuàng)建的項(xiàng)目將在android studio中打開,我們現(xiàn)在就可以進(jìn)行處理

步驟6:將庫(kù)添加到新項(xiàng)目中

在左上角在主屏幕上,將出現(xiàn)一個(gè)下拉菜單,其名稱為android,將選項(xiàng)更改為project以查看項(xiàng)目的目錄結(jié)構(gòu)。

在目錄結(jié)構(gòu)中,通過(guò)展開“ app”文件夾,您可以找到lib該文件夾是放置我們的庫(kù)的默認(rèn)文件夾。

復(fù)制physicaloidlibrary.jar文件并將其粘貼到libs文件夾中

粘貼后,單擊頂部的“與gradle文件同步項(xiàng)目”按鈕。

現(xiàn)在庫(kù)已添加,我們可以在代碼中使用其功能。

在首次創(chuàng)建項(xiàng)目時(shí)自動(dòng)創(chuàng)建的主要活動(dòng)將位于

App》 src》 main》 java》 YOUR_ACTIVITY

布局將位于

App》 src》 main》 res》布局》 activity_serial_monitor.xml

步驟7:編輯Manifest.xml

清單文件類似于我們項(xiàng)目的主要屬性文件,其中包含權(quán)限詳細(xì)信息和活動(dòng)詳細(xì)信息

清單文件位于App》 src》 main》 AndroidManifest中.xml

打開文件并添加

我的清單文件上方的行看起來(lái)像

通過(guò)添加該行,我們每次將USB設(shè)備連接到OTG端口時(shí)都要求用戶許可

步驟8:設(shè)計(jì)布局

編輯應(yīng)在“ content_serial_monitor.xml”文件中完成

我已拖動(dòng)3個(gè)按鈕,1個(gè)編輯文本,1個(gè)文本視圖顯示在屏幕上,然后重命名并按正確順序放置它們。

打開–打開與USB設(shè)備的連接

關(guān)閉–關(guān)閉與USB設(shè)備的連接

發(fā)送–將數(shù)據(jù)發(fā)送到Arduino

我還添加了一個(gè)微調(diào)器,以選擇串行監(jiān)視器中可用的波特率和自動(dòng)滾動(dòng)功能

將此字符串?dāng)?shù)組添加到位于應(yīng)用程序》 src》 main》 res》值》 strings.xml中的strings.xml文件中

Serial Monitor

Settings

Choose Baudrate

300 baud

1200 baud

2400 baud

4800 baud

9600 baud

19200 baud

38400 baud

576600 baud

744880 baud

115200 baud

230400 baud

250000 baud

讓我們?cè)趹?yīng)用程序中添加精美的圖標(biāo)

右鍵單擊應(yīng)用程序》新建》圖像資產(chǎn)

現(xiàn)在瀏覽所需的圖像文件并將其設(shè)置為ic_launcher,它將覆蓋默認(rèn)的android圖標(biāo)

Step 9:將代碼添加到UI元素

我附加了完整的Java文件Serial_monitor.java,首先下載了該文件并將其與這些小代碼段進(jìn)行比較。

首先我們創(chuàng)建所有UI元素和庫(kù)變量

Button btOpen, btClose, btWrite;

EditText etWrite;

TextView tvRead;

Spinner spBaud;

CheckBox cbAutoscroll;

Physicaloid mPhysicaloid; // initialising library

下一步,在onCreate方法中,我們可以初始化我們創(chuàng)建的那些變量

btOpen = (Button) findViewById(R.id.btOpen);

btClose = (Button) findViewById(R.id.btClose);

btWrite = (Button) findViewById(R.id.btWrite);

etWrite = (EditText) findViewById(R.id.etWrite);

tvRead = (TextView) findViewById(R.id.tvRead);

spBaud = (Spinner) findViewById(R.id.spBaud);

cbAutoscroll = (CheckBox)findViewById(R.id.autoscroll);

mPhysicaloid = new Physicaloid(this); // setting the context for library

現(xiàn)在我們可以顯示屏幕上必需的UI元素,我正在調(diào)用一個(gè)方法來(lái)實(shí)現(xiàn)此目的

該方法采用布爾參數(shù),該參數(shù)指定天氣應(yīng)用是否已連接到Arduino

setEnabledUi(false);//未連接到Arduino,所以為假

//setEnabledUi method to set UI elements on screen

private void setEnabledUi(boolean on) {

if(on) { // if connected to device

btOpen.setEnabled(false); //hide open button (already opened)

spBaud.setEnabled(false); //hide baudrate selector

cbAutoscroll.setEnabled(false); // hide autoscroll

btClose.setEnabled(true); // display close button

btWrite.setEnabled(true); // display send button

etWrite.setEnabled(true); // display edittext field

} else { // if not connected to device

btOpen.setEnabled(true); //display open button

spBaud.setEnabled(true); //display baudrate selector

cbAutoscroll.setEnabled(true); //display autoscroll

btClose.setEnabled(false); // hide close button (already closed)

btWrite.setEnabled(false); // hide send button

etWrite.setEnabled(false); // hide edittext field

}

}

現(xiàn)在我們根據(jù)需要顯示了所有內(nèi)容,現(xiàn)在我們可以向按鈕添加操作。

打開按鈕的偵聽器方法,在此方法涵蓋了波特率設(shè)置,自動(dòng)滾動(dòng)選項(xiàng)以及與設(shè)備的連接。

public void onClickOpen(View v) {

// setting the baudrate based on spinner

String baudtext = spBaud.getSelectedItem().toString(); // get the text from spinner

//switch statement to check for baud rate

switch (baudtext) {

case “300 baud”:

mPhysicaloid.setBaudrate(300);

break;

case “1200 baud”:

mPhysicaloid.setBaudrate(1200);

break;

case “2400 baud”:

mPhysicaloid.setBaudrate(2400);

break;

case “4800 baud”:

mPhysicaloid.setBaudrate(4800);

break;

case “9600 baud”:

mPhysicaloid.setBaudrate(9600);

break;

case “19200 baud”:

mPhysicaloid.setBaudrate(19200);

break;

case “38400 baud”:

mPhysicaloid.setBaudrate(38400);

break;

case “576600 baud”:

mPhysicaloid.setBaudrate(576600);

break;

case “744880 baud”:

mPhysicaloid.setBaudrate(744880);

break;

case “115200 baud”:

mPhysicaloid.setBaudrate(115200);

break;

case “230400 baud”:

mPhysicaloid.setBaudrate(230400);

break;

case “250000 baud”:

mPhysicaloid.setBaudrate(250000);

break;

default: // default is 9600

mPhysicaloid.setBaudrate(9600);

}

if(mPhysicaloid.open()) { // tries to connect to device and if device was connected

setEnabledUi(true);

if(cbAutoscroll.isChecked()) { // if auto scroll was selected

tvRead.setMovementMethod(new ScrollingMovementMethod());

}

// read listener, When new data is received from Arduino add it to Text view

mPhysicaloid.addReadListener(new ReadLisener() {

@Override

public void onRead(int size) {

byte[] buf = new byte[size];

mPhysicaloid.read(buf, size);

tvAppend(tvRead, Html.fromHtml(“” + new String(buf) + “”)); // add data to text viiew

}

});

} else {

//Error while connecting

Toast.makeText(this, “Cannot open”, Toast.LENGTH_LONG).show();

}

}

tvAppend方法將接收到的數(shù)據(jù)寫入Textview

Handler mHandler = new Handler();

private void tvAppend(TextView tv, CharSequence text) {

final TextView ftv = tv;

final CharSequence ftext = text;

mHandler.post(new Runnable() {

@Override

public void run() {

ftv.append(ftext); // add text to Text view

}

});

}

用于關(guān)閉按鈕的監(jiān)聽器

public void onClickClose(View v) { //when close button is pressed

if(mPhysicaloid.close()) { //close the connection to arduino

mPhysicaloid.clearReadListener(); //clear read listener

setEnabledUi(false); // set UI accordingly

}

}

發(fā)送按鈕的監(jiān)聽器

public void onClickWrite(View v) { // when send button is prressed

String str = etWrite.getText().toString()+“ ”; //get text from EditText

if(str.length()》0) {

byte[] buf = str.getBytes(); //convert string to byte array

mPhysicaloid.write(buf, buf.length); //write data to arduino

}

}

這一切都已完成,只需連接手機(jī)并運(yùn)行應(yīng)安裝并打開的程序即可。

第10步:測(cè)試應(yīng)用程序

現(xiàn)在連接手機(jī)并通過(guò)以下方式運(yùn)行代碼使用頂部的“播放”按鈕,現(xiàn)在會(huì)彈出設(shè)備選擇器對(duì)話框,并詢問(wèn)該應(yīng)用程序應(yīng)安裝在哪個(gè)設(shè)備上。

注意:如果您在列表中找不到手機(jī),請(qǐng)嘗試重新安裝手機(jī)驅(qū)動(dòng)程序。

p》

如果選擇正確,則應(yīng)用程序應(yīng)自動(dòng)安裝在手機(jī)上,并對(duì)UI進(jìn)行必要的調(diào)整。

運(yùn)行一些測(cè)試代碼并上傳到arduino

void setup()

{

// Open serial communications and wait for port to open:

// Serial.begin(1200);

// Serial.begin(2400);

// Serial.begin(4800);

Serial.begin(9600);

// Serial.begin(14400);

// Serial.begin(19200);

// Serial.begin(38400);

// Serial.begin(57600);

// Serial.begin(115200);

}

void loop()

{

while(Serial.available() 》 0) {

Serial.write(Serial.read());

}

}

斷開手機(jī)與PC的連接,并使用OTG電纜連接到Arduino,并發(fā)送一些應(yīng)返回的數(shù)據(jù)

步驟11:其他用途

您可以修改布局和代碼以適合您的需要,并為分別制造的每臺(tái)設(shè)備制作一個(gè)應(yīng)用程序

例如,我修改了相同的項(xiàng)目以用作我的電動(dòng)機(jī)計(jì)時(shí)器控制器接口

責(zé)任編輯:wv

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

    關(guān)注

    12

    文章

    3966

    瀏覽量

    129647
  • OTG
    OTG
    +關(guān)注

    關(guān)注

    2

    文章

    153

    瀏覽量

    46401
  • Arduino
    +關(guān)注

    關(guān)注

    189

    文章

    6493

    瀏覽量

    190209
收藏 人收藏

    評(píng)論

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

    ArkUI-X與Android消息通信

    平臺(tái)橋接的名稱一致。通過(guò)創(chuàng)建的該對(duì)象即可調(diào)用平臺(tái)橋接的方法。數(shù)據(jù)可以發(fā)送json格式或二進(jìn)制格式。 // xxx.ets // 導(dǎo)入平臺(tái)橋接模塊 import bridge from
    發(fā)表于 06-08 22:15

    帶有USB C的便攜式設(shè)備可以通過(guò)USB C轉(zhuǎn)USB A電纜連接到計(jì)算機(jī)的USB A嗎?

    通過(guò) PC 進(jìn)行數(shù)據(jù)傳輸。 但是我們現(xiàn)在正在解決USB A到PC的向后兼容問(wèn)題,這樣即使沒(méi)有USB C連接器,用戶也可以將我們的設(shè)備連接到PC并使用該
    發(fā)表于 05-27 06:29

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-開發(fā)板適配之USB_OTG

    USB主設(shè)備(以電腦為例)的時(shí)候,i.MX6ULL會(huì)識(shí)別出它連接的是主設(shè)備,于是把自己作為從設(shè)備device與電腦通信,不給OTG接口供電;當(dāng)i.MX6ULL與U盤連接的時(shí)候,i.MX6ULL會(huì)識(shí)別
    發(fā)表于 02-28 09:29

    飛凌嵌入式ElfBoard ELF 1板卡-開發(fā)板適配之USB_OTG

    展開講)引腳接地了,并沒(méi)有連接到SOC檢測(cè)引腳,所以使用OTG功能,i.MX6ULL只能工作在device模式,當(dāng)做從設(shè)備使用。當(dāng)然也可以通過(guò)修改軟件,將此接口用作host模式。將USB_OT
    發(fā)表于 02-27 09:16

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

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

    android手機(jī)上emulate應(yīng)用程序的方法

    Android手機(jī)上模擬(emulate)應(yīng)用程序的方法通常涉及到使用Android模擬器(Emulator)或類似的工具來(lái)模擬Android環(huán)境,以便在沒(méi)有實(shí)際物理設(shè)備的情況下運(yùn)行
    的頭像 發(fā)表于 12-05 15:33 ?1090次閱讀

    開源項(xiàng)目!基于 Arduino 的 MIDI 架子鼓

    牢固地固定在插槽中。 第 6 步:給鼓墊接線 1、固定電纜: 使用熱膠將帶狀電纜連接到墊子上。 2、焊接鼓墊: 通過(guò)焊接將鼓墊連接到多頻段帶狀電纜。 第 7 步:制作
    發(fā)表于 11-25 12:00

    使用OpenVINO? ElectronJS中創(chuàng)建桌面應(yīng)用程序

    的用戶體驗(yàn)。 1 應(yīng)用程序概覽:一種簡(jiǎn)單的背景虛化方法 這個(gè)演示展示了如何在 Node.js 環(huán)境中使用 OpenVINO 工具包實(shí)現(xiàn)背景虛化,并通過(guò) Electron.js 創(chuàng)建的直觀桌面界面進(jìn)行
    的頭像 發(fā)表于 11-25 11:35 ?506次閱讀
    使用OpenVINO? ElectronJS中<b class='flag-5'>創(chuàng)建</b>桌面<b class='flag-5'>應(yīng)用程序</b>

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

    Arduino Mega等。 USB數(shù)據(jù)線 :用于將Arduino開發(fā)板連接到計(jì)算機(jī)。 串口設(shè)備 :可以是另一個(gè)Arduino開發(fā)板、傳感
    的頭像 發(fā)表于 11-22 09:24 ?1987次閱讀

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

    開源硬件平臺(tái),通過(guò)添加CAN總線模塊,也可以實(shí)現(xiàn)CAN通信。 硬件準(zhǔn)備 Arduino開發(fā)板 :可以選擇
    的頭像 發(fā)表于 11-12 10:09 ?2536次閱讀

    OTG技術(shù)的原理是什么

    OTG(On-The-Go)技術(shù)是一種允許USB設(shè)備之間直接進(jìn)行數(shù)據(jù)交換的技術(shù),它允許USB設(shè)備之間無(wú)需通過(guò)計(jì)算機(jī)即可直接連接和通信。這項(xiàng)技
    的頭像 發(fā)表于 09-26 16:16 ?4311次閱讀

    如何使用長(zhǎng)USB電纜通過(guò)TPS25840-Q1設(shè)備改進(jìn)眼圖

    電子發(fā)燒友網(wǎng)站提供《如何使用長(zhǎng)USB電纜通過(guò)TPS25840-Q1設(shè)備改進(jìn)眼圖.pdf》資料免費(fèi)下載
    發(fā)表于 09-25 14:25 ?0次下載
    如何使用長(zhǎng)<b class='flag-5'>USB</b><b class='flag-5'>電纜</b><b class='flag-5'>通過(guò)</b>TPS25840-Q1設(shè)備改進(jìn)眼圖

    如果SPI啟動(dòng)失敗,如何創(chuàng)建通過(guò)USB啟動(dòng)的兩階段啟動(dòng)加載程序

    包括 SPI 啟動(dòng)和 USB 啟動(dòng)。 選擇 USB 啟動(dòng)時(shí),該應(yīng)用程序 支持加載和運(yùn)行完整的固件應(yīng)用程序;無(wú)需通過(guò)
    發(fā)表于 08-01 08:13

    CYC8PROTO-063-BLE是否可以通過(guò)智能手機(jī)上的標(biāo)準(zhǔn)設(shè)置應(yīng)用程序建立連接?

    你好,我是使用 BLE 的新手,正在使用 CYC8PROTO-063-BLE 板,我想知道是否可以通過(guò)智能手機(jī)(iOS 或 Android)上的標(biāo)準(zhǔn)設(shè)置應(yīng)用程序建立連接。 到目前為止,
    發(fā)表于 07-23 08:20

    如何在Android 10設(shè)備上通過(guò)App控制GPIO

    本文檔提供了在 Android 10 設(shè)備上通過(guò)應(yīng)用程序(App)控制通用輸入輸出(GPIO)的詳細(xì)指南。這涵蓋了從創(chuàng)建 gpio驅(qū)動(dòng)到App 配置 以及 SELinux 策略以允許特
    的頭像 發(fā)表于 07-22 17:59 ?1904次閱讀
    主站蜘蛛池模板: 性夜影院爽黄a免费视频 | 国产精品资源在线 | 亚欧乱色束缚一区二区三区 | 免费看黄色网 | h在线观看网站 | 波多野吉衣一区二区三区在线观看 | 成人看片免费无限观看视频 | 欧美爆操| 日韩午夜r电影在线观看 | 99色网站| 亚洲最新网站 | 在线免费看片a | 成人在线免费电影 | 欧美午夜视频在线 | 日本人的xxxxxxxxx69 | 美女视频黄的免费视频网页 | 日本亚洲卡一卡2卡二卡三卡四卡 | 日韩一级片免费观看 | 欧美精品久久久久久久小说 | 7799国产精品久久久久99 | 日本人善交69xxx | 色在线视频播放 | 最新版天堂资源中文官网 | 天天草天天草 | 欧美zoozzooz在线观看 | 日本特黄a级高清免费大片18 | 久久国产香蕉视频 | 天天干网| 99久久久久久久 | 国产综合在线视频 | 操黄色| 色综合天天综合网国产国产人 | 亚洲视频久久 | 五月天婷婷网亚洲综合在线 | 手机福利在线 | 三级网在线| 天天干天天爱天天射 | 女上男下边吃奶边做视频成都 | 国产美女免费 | 亚洲人成在线精品不卡网 | 朋友夫妇和交换性bd高清 |