Toggle navigation
首页
(current)
问答
文章
话题
商城
登录
注册
如何用java操作Air202-S6的UART串口?(二)
java
air202
Air202S6
uart
Air202S6开发板通过java操作UART
### 背景: 上一篇文章简单介绍了如何在Air202-S6开发环境中用java编写Helloworld,大家对开发环境都已经有了一个了解;今天我们就继续探究一下Air202模块的标准UART接口,看看如何把它利用起来; UART作为一个标准接口用途是十分广泛的,有时候我们做一些数据通讯,控制外设运行状态比其它一些接口(SPI/I2C)更加方便快捷;所以说熟练掌握编写串口通信的业务代码对后续工作有很大的帮助; ### 目标: 1) UART Demo实例设计与编写 2) Demo运行效果展示 ### 步骤: 1) 下载Air202模块支持java的ROM刷新到模块即可;【[下载传送门](https://github.com/iotinjava/Air202S6 "下载传送门")】 2) 下载应用编写的SDK开发环境;【[下载传送门](https://file.joshvm.com/resource/studio/JoshVM_win32-1.1.10.v20191212.zip "下载传送门")】 3) 编写应用Uart Demo,加载到模块执行; ### 硬件环境: 1) S6核心开发板-AT版 :数量 1 2) USB2COM,usb转串口: 数量2 3) 电源适配器转接头【 输入:220v/50Hz ;输出:5V/2A】 :数量1 4) 按键开关(控制S6开发板上电/断电):数量1 5) 接插线 若干 原理图:  从PC侧看串口: COM53:连接开发板上的UART2端口,在PC端开启串口工具和模块进行交互; COM61:连接开发板上的UART1端口,下载应用jar到模块,输出应用log; 从模块侧看串口: UART1:在java内映射成COM0,供应用下载与log输出; UART2:在java内映射成COM1,供java应用使用,与外部设备进行数据通讯交互。 实际连接图:  准备好上述所需资源后,下面让我们开始实战操练: 一:SDK的开发环境; a) 建立工程Air202S6Demo01Uart工程,编写Air202S6Demo01Uart.java代码 在java中,COM端口被看作流设备,可以使用StreamConnection类来连接;对COM端口的读和写操作分别被输入类(InputStream)和输出类(OutputStream)封装; 定义使用串口名称和波特率: ```java private static String com = "COM1"; private static int baudrate = 115200; ``` 串口连接变量: ```java private static StreamConnection sc; private static InputStream in; private static OutputStream out; ``` 打开串口以及关联输入&输出 ```java String host = "comm:" + com + ";baudrate=" + baudrate; try { sc = (StreamConnection) Connector.open(host); in = sc.openInputStream(); out = sc.openOutputStream(); …….. ``` 串口数据读取在while循环中,将读到的数据显示打印,判断如果是quit,则退出应用;然后将收到的数据回显到PC发送端; ```java while ((len = in.read(buffer)) != -1) { String str = new String(buffer,0,len); System.out.println("len:" + len + "; str:"+str); if(EXIT_CMD.equals(str)) break; out.write(str.getBytes()); out.write("\r\n".getBytes()); } ``` 串口Read读取模式为block模式,如果没有读到数据的话,就处于阻塞状态,直到有数据输入,才继续执行下面的代码; 当程序结束退出时候,在finally模块中关闭已经打开串口资源 ```java …… } finally { try { if (in != null) in.close(); if (out != null) out.close(); if (sc != null) sc.close(); } catch (IOException e) { e.printStackTrace(); } } ``` b) File->Export->选择Josh Standalone中的Export MIDlet package -> Next -> Export配置界面  c) 按Finish按键,生成Air202S6Demo01Uart.jar  二:下载应用app到模块; 应用jar下载到模块中的功能由SDK\bin\joshConsole.exe完成; 1, 给S6开发板断电; 2, 输入下载应用命令: > **C:\JoshVM_win32-1.1.3.v20190531\JoshVM\SDK\bin>JoshConsole.exe \\.\COM61 -d Air202S6Demo01Uart.jar**  3, 给S6开发板上电; 4, 等待下载应用jar完成;  三:运行应用app并检查执行结果; 1, 给S6开发板断电; 2, 输入运行应用jar命令; > **C:\JoshVM_win32-1.1.3.v20190531\JoshVM\SDK\bin>JoshConsole.exe \\.\COM61 -r Air202S6Demo01Uart.jar Air202S6Demo01Uart** -r:运行已经下载到模块中的应用jar,没有下载到模块jar无法直接运行;后接文件名 类名;  3, 给S6开发板上电; 4, 等待运行应用jar运行;  上电后,我们可以看到Jar应用的输出log,我们在PC上用串口工具打开COM53,发送数据给Air202模块中的jar应用;  然后点击 串口工具上的 发送 按钮;  当测试完成,可以在PC端的串口程序上输入“quit”命令,控制Air202模块上的退出串口测试程序;  到此为止,Air202模块上用java操控Uart串口试验可以告一段落,各位同学后续在实际业务中的串口操作可以根据具体业务流程来重新规划; 一点说明: Air202-S6的开发板上面有一个开机键,正常模块启动是在上电后 按一下那个pwk键,模块才可以启动;翻看产品规格书后发现,只要将开机键旁边的2个触点短接后,就可以做到上电自动开机; 所以就将焊盘短接后通过外接一个开关键控制上电开机;  ### 相关资源获取:https://github.com/iotinjava/Air202S6
发表于 2020-01-02 18:28
阅读 ( 2160 )
分类:
默认分类
0 推荐
收藏
你可能感兴趣的文章
合宙Luat Air720SL开发板(EVB_Air720SL)初体验(3)-实现屏幕显示(上)
3400 浏览
淘宝夹子报警器上仿冒合宙Air202E模块的研究
4339 浏览
GPS/北斗 导航模块 Air530开发板G1学习日记
4593 浏览
滴云快快快速云产品开发体验
2816 浏览
合宙开发板使用JSON、TLV格式接入滴云DiverseCloud的示例-Air202 S5开发板
3431 浏览
相关问题
AIR202有没有可以获取代码运行时间的接口?
0 回答
Air202 S5开发板连上四个焊点开启自带看门狗之后占用的到底是哪两个GPIO?
1 回答
串口持续收到0xff,但是并没有连接设备
1 回答
202 断线重连机制请教
1 回答
Air202 - ril.regUrc(prefix, handler)
1 回答
air202接锂电池供电,通话时, 电压跌落太厉害以至于关机,或断线,或重启。
1 回答
1 条评论
请先
登录
后评论
fly
2 篇文章
作家榜
»
技术销售Delectate
43 文章
陈夏
26 文章
国梁
24 文章
miuser
21 文章
晨旭
20 文章
朱天华
19 文章
金艺
19 文章
杨奉武
18 文章
×
发送私信
发给:
内容:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!