项目场景:
android手机+arduino-OTG通信
问题描述
官网aidLux下载安装,安装例程实现串口收发,有许多问题,不适合小白,修改了例程代码,实现串口收发
#encode='utf-8'
from cvs import *
import android
import time
import json
droid=android.Android()
print("waiting....")
result = droid.startSearchSerialUsb()
print("OK....", end = " ")
print(result)
#获取连接并判断
devices = json.loads(result[1])
print(devices)
if devices : # == 'true':
print('连接成功.....')
else:
print('No connection')
while True:
print("Please plugin Arduino!")
time.sleep(1)
#连接串口
def connect_device(devices):
for device in devices:
#if device['deviceId'] == 2005:
#if device['deviceId'] == select_device_id:
#connection = droid.connectSerialUsb(device['port'], device['deviceId'], select_baud)
connection = droid.connectSerialUsb(0, device['deviceId'], 115200)
print(connection)
connect_result = connection[1]
if connect_result == 'true':
print('连接成功')
#接收,接收的默认16进制print,需要decode一下
def accept_message():
message = droid.getReceiveData()[1]
if message!='':
mystr=bytes.fromhex(message).decode()
print(mystr)
#print(type(message))
#if message != "":
# print(message)
#print(chr(message))
#写数据
#默认发送16进制,需要将字符串转换
def OTG_write(msg):
droid.writeSerialData((msg+'\r\n').encode().hex())
print('OUT:'+msg+'\r\n')
#droid.writeSerialData("0x2233445566")
#断开连接
def reset_connection():
droid.disconnectSerialUsb()
print('.........断开连接.....')
connect_device(devices)
while True:
needSend=input("发送数据:")
OTG_write(needSend)
#droid.writeSerialData(('HELLO'+'\r\n').encode().hex())
#time.sleep(1)
accept_message()
time.sleep(1)
reset_connection()
原因分析:
提示:这里填写问题的分析:
收发16进制,需要decode和incode一下
后续:
使用多任务的思想,把收发分离