如何用java操作Air202-S6的UART串口?(二)

背景:

上一篇文章简单介绍了如何在Air202-S6开发环境中用java编写Helloworld,大家对开发环境都已经有了一个了解;今天我们就继续探究一下Air202模块的标准UART接口,看看如何把它利用起来;
UART作为一个标准接口用途是十分广泛的,有时候我们做一些数据通讯,控制外设运行状态比其它一些接口(SPI/I2C)更加方便快捷;所以说熟练掌握编写串口通信的业务代码对后续工作有很大的帮助;

目标:

1) UART Demo实例设计与编写
2) Demo运行效果展示

步骤:

1) 下载Air202模块支持java的ROM刷新到模块即可;【下载传送门
2) 下载应用编写的SDK开发环境;【下载传送门
3) 编写应用Uart Demo,加载到模块执行;

硬件环境:

1) S6核心开发板-AT版 :数量 1
2) USB2COM,usb转串口: 数量2
3) 电源适配器转接头【 输入:220v/50Hz ;输出:5V/2A】 :数量1
4) 按键开关(控制S6开发板上电/断电):数量1
5) 接插线 若干

原理图:
图1

从PC侧看串口:
COM53:连接开发板上的UART2端口,在PC端开启串口工具和模块进行交互;
COM61:连接开发板上的UART1端口,下载应用jar到模块,输出应用log;

从模块侧看串口:
UART1:在java内映射成COM0,供应用下载与log输出;
UART2:在java内映射成COM1,供java应用使用,与外部设备进行数据通讯交互。

实际连接图:
图2

准备好上述所需资源后,下面让我们开始实战操练:

一:SDK的开发环境;
a) 建立工程Air202S6Demo01Uart工程,编写Air202S6Demo01Uart.java代码

在java中,COM端口被看作流设备,可以使用StreamConnection类来连接;对COM端口的读和写操作分别被输入类(InputStream)和输出类(OutputStream)封装;

定义使用串口名称和波特率:

1
2
private static String com = "COM1";
private static int baudrate = 115200;

串口连接变量:

1
2
3
private static StreamConnection sc;
private static InputStream in;
private static OutputStream out;

打开串口以及关联输入&输出

1
2
3
4
5
6
String host = "comm:" + com + ";baudrate=" + baudrate;
try {
sc = (StreamConnection) Connector.open(host);
in = sc.openInputStream();
out = sc.openOutputStream();
……..

串口数据读取在while循环中,将读到的数据显示打印,判断如果是quit,则退出应用;然后将收到的数据回显到PC发送端;

1
2
3
4
5
6
7
8
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模块中关闭已经打开串口资源

1
2
3
4
5
6
7
8
9
10
11
12
13
……
} 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配置界面
图3

c) 按Finish按键,生成Air202S6Demo01Uart.jar
图4

二:下载应用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
图5

3, 给S6开发板上电;
4, 等待下载应用jar完成;
图6

三:运行应用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无法直接运行;后接文件名 类名;
图7

3, 给S6开发板上电;
4, 等待运行应用jar运行;
图8

上电后,我们可以看到Jar应用的输出log,我们在PC上用串口工具打开COM53,发送数据给Air202模块中的jar应用;
图9

然后点击 串口工具上的 发送 按钮;
图10
当测试完成,可以在PC端的串口程序上输入“quit”命令,控制Air202模块上的退出串口测试程序;
图11

到此为止,Air202模块上用java操控Uart串口试验可以告一段落,各位同学后续在实际业务中的串口操作可以根据具体业务流程来重新规划;

一点说明:
Air202-S6的开发板上面有一个开机键,正常模块启动是在上电后 按一下那个pwk键,模块才可以启动;翻看产品规格书后发现,只要将开机键旁边的2个触点短接后,就可以做到上电自动开机;
所以就将焊盘短接后通过外接一个开关键控制上电开机;
图12

相关资源获取:https://github.com/iotinjava/Air202S6

上次更新 2021-01-28