一个通过java串口通信控制LED显示数据的实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一个通过java串口通信控制LED显示数据的实例

在很多应用程序中都需要用到pc机与外部设备如:嵌入式系统、传感器、开关

设备等进行数据通讯。其中,最常用的接口就是RS-232串口和并口。SUN的

CommAPI分别提供了对常用的RS232串行端口和IEEE1284并行端口通讯的支持。

至于java串口通讯的配置以及通讯模式在sun的demo以及网上都有很多具体的

实例。

下面是我在开发一个叫号功能模块时通过串口通信来控制LED显示的实例,由于

第一次进行相关的开发,看似一个非常简单的功能在实际开发中却遇到了一些问

题,希望本人的解决方式能够对大家有所帮助,也希望大家能够提出更好的解决

方式。

先看一下LED显示屏厂商提供的通讯协议:

---遥控单双色、单双行、混合屏

一、每一次对任一特定地址发送信息由内码帧(7f/7e),数码帧

(6f/6e),定时帧(5f),时间帧(4f)中的一种或多种构成,结束

时发送一结束帧。

二、帧结构:每帧由84字节构成。

1、内码帧:一幕由一起始帧和零或多个中间帧组成,一次

发送可有多幕。

1)起始帧:地址(1字节)+帧控制7F(1字节)

+幕号(1字节)+COMMAND(8字节)

+内码/ASCII(73字节)

2)中间帧:地址(1字节)+帧控制7E(1字节)+

幕号(1字节)+COMMAND(8字节)+内码/ASCII

(73字节)

3)COMMAND:

前4字节未定义,后4字节依次为动画(0~4),移入及移出(各16种),速度(0~255),追加

(D3连续、D2停止、D0闪烁、D4时间、D6暂停、

D7动画)

4)内码/ASCII结构:

a、内码4字节,依次为控制字节(D7宽体/正常体、 D4绿色、D5红色、D3粗体、D2细体反白、D1

粗体反白、D0细体),内码高位,内码低位,未用

b、ASCII 2字节,依次为控制字节(D7宽体/正常体、 D5绿色、D4红色、D3粗体、D2细体反白、D1粗体

反白、D0细体),ASCII码

2、数码帧:由一起始帧和零或多中间帧组成。

1)起始帧:地址(1字节)+帧控制6F(1字节)+

数据(82字节)

2)间帧:地址(1字节)+帧控制6E(1字节)+

数据(82字节)

3、定时帧:由一帧组成。

起始帧:地址(1字节)+帧控制5F(1字节)+

数据(48字节)+无效数据

包括8个定时器,每个6字节,结构如下:

开/关(0为OFF、1为ON),日期(0~6为

sunday~satday、7为每一天),小时(0~23),

分钟(0~59),起始幕,结束幕。

4、时间帧:由一帧组成。

地址(1字节)+帧控制4F(1字节)+年高二位

(1字节)+年低二位(1字节)+月(1字节)+日

(1字节) +时(1字节)+分(1字节)+星期(1字节)

+无效数据

日期都用十进制表示,星期部分0为星期日。

4、结束帧:由一帧组成。

地址(1字节)+帧控制7D(1字节)+无效数据(82 字节)

3)移入,移出模式:各16种模式,可任意组合。

三、移入模式:移出模式:

模式0:移入← 移出←

模式1:移入→ 移出→

模式2:移入↑ 移出↑

模式3:移入↓ 移出↓

模式4:跳入← 跳出←

模式5:展开→ 展开→

模式6:展开← 展开←

模式7:展开↑ 展开↑

模式8:展开↓ 展开↓

模式9:展开←→ 展开←→

模式10:展开→← 展开→←

模式11:展开↑↓ 展开↑↓

模式12:展开↓↑ 展开↓↑

模式13:即入即出

模式14:预备预备

模式15:随机(已设为循环)随机(已设为循环)

四、通讯卡接口:

1)初始化通讯卡:

a、将0xFF写入地址211H

b、从211H读入一字节,判断D3是否为‘1’,如为‘0’则重复此步骤

c、将0x00写入地址211H

d、从211H读入一字节,判断D3是为‘0’,如为‘1’则重复此步骤

e、初始化完成

2)写入数据地址:210H

串口通讯涉及到的部分主要代码:

Java代码

1.import java.io.*;

2.import m.*;

3.

4.public class SerialBean {

5. static SerialBean bean;

6. String PortName;

7. CommPortIdentifier portId;

8. SerialPort serialPort;

9. OutputStream out;

10. InputStream in;

11.

12.

13. public String getPortName() {

14. return PortName;

15. }

16.

17. public void setPortName(String portName) {

18. PortName = portName;

19. }

20.

21. private SerialBean(int PortID) {

22. PortName = "COM" + PortID;

23.

24. }

25.

26. public static SerialBean getInstance() {

27. if (bean == null) {

28. if (!portInit(1))

29. return null;

相关文档
最新文档