技术开发 频道

用Java编写短信软件


    四、 使用Java通讯API开发短信软件
    和访问网络资源一样,和COM口通讯的第一步必须要打开某一个COM口。因此,我们首先需要一个可以操作COM口的类,我们叫它MySerial(这将是我们实现的第一个Java类)。
package com.message import Java.io.*; import Java.util.*; import Javax.comm.*; public class MySerial { private String portName; private CommPortIdentifier portId; private SerialPort serialPort; private OutputStream out; private InputStream in; SerialBuffer serialBuffer; // SerialBuffer类在后面实现 ReadSerial readSerial; // ReadSerial在后面实现 /* 这个方法是MySerial的构造函数,参数port表示COM口,1:COM1,2:COM2, 以此类推。在这个类中设置了COM口名:portName。portName必须是这种格式,因为getPortIdentifier方法要使用它 */ public MySerial(int port) { portName = "COM" + port; } /** 这个函数初始化了COM口,也就是我们所说的打开COM口,并得到用于和COM口通讯的输入、输出流。  */ public int Initialize() { private int success = 1; private int fail = -1; try { // 根据portName得到COM的标识对象 portId = CommPortIdentifier.getPortIdentifier(portName); try { // 打开COM口, open方法的第二个参数是超时时间,单位是毫秒。 // 在本程序中超时时间是5秒 serialPort = (SerialPort) portId.open("Serial_Communication", 5000); } catch (PortInUseException e) { return fail; } // 下面是得到用于和COM口通讯的输入、输出流。 Try { in = serialPort.getInputStream(); out = serialPort.getOutputStream(); } catch (IOException e) { return fail; } // 下面是初始化COM口的传输参数,如传输速率:9600等。 try { serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); } catch (UnsupportedCommOperationException e) { return fail; } } catch (NoSuchPortException e) { return fail; } // 当上面的代码执行成功后,将建立一个数据缓冲区,然后启动 // 一个线程,用于接收从COM 口传回的数据 serialBuffer = new SerialBuffer(); readSerial = new ReadSerial(serialBuffer, in); readSerial.start(); return success; } // 这个方法从COM口读出length个字符 public String readPort(int length) { String msg; msg = getMsg(Length); return msg; } // 这个函数向COM口写入一个字符串 public void writePort(String msg) { int c; try { for (int i = 0; i < msg.length(); i++) { out.write(msg.charAt(i)); } } catch (IOException e) {} } // 关闭正在使用的COM口 public void closePort() { readSerial.stop(); serialPort.close(); } }
    上面实现的类是我们的核心类,它的主要功能之一就是初始化COM口,并保证COM口可以正常使用。我们可以发现,在MySerial类中还调用了两个类:SerialBuffer和readSerial。下面就来实现这两个类。
0
相关文章