作者:中国资讯网 来源:zixuen.com 加入时间:2005-12-5
Test.java
package steeven.mobile;
import javax.comm.*;
/**
* Title: steeven mobile
*Description:
*Copyright: Copyright (c) 2002
*Company: konamish
* @author phpme@citiz.net
* @version 1.0
*
* Software requirement:
*http://java.sun.com/products/javacomm (串口支持API)
* Hardware requirement:
*Moblie data line or IR interface (手机数据线或者红外线连接模拟成COM3/COM4)
*
* 最近新购一机Siemens6618, 发现特别好用. 通过数据线发送AT指令, 可实现短消息, 通讯录等读写操作.
* 具体指令请参考手机厂商的资料.
* 本程序只是试验性质. 手机损坏后果自负.
*
* 参考工具:
*串口监听:hdd serial monitor(http://www.hhdsoftware.com)
*西门子6618 AT指令: http://www.my-siemens.com/com.aperto/MySiemens/Files/Addon/tt/hq/mw/hd/hd/gprs_at_commandset.pdf
*分形手机工作室: http://fractal.longcity.net
*/
public class Test implements javax.comm.SerialPortEventListener{
private String portName = "COM1";
private javax.comm.SerialPort port = null;
private java.io.InputStream in;
private java.io.OutputStream out;
private boolean debug = true;
public Test() throws Exception{
init();
write("AT+CGMI");//厂商
readWait();
write("AT+CGMM");//型号
readWait();
write("AT+CPBR=1"); //第一条通讯录
readWait();
//从控制台输入指令, 回车结束, exit退出
java.io.BufferedReader r = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
String input;
do{
input = r.readLine();
if (input.equalsIgnoreCase("exit"))
break;
write(input);
readWait();
}while(true);
close();
}
public String read() throws Exception{
int size = in.available();
if (size<1)
return null;
byte[] input = new byte[size];
in.read(input,0,size);
String ret = new String(input);
System.out.print("read: \t"+byte2hex(input)+"\n"+ret);
System.out.println("=================================");
return ret;
}
public String readWait()throws Exception{
while (in.available()<1)
Thread.sleep(20);
String input = read();
return input;
}
public void write(String cmd) throws Exception{
cmd += "\r";
out.write((cmd).getBytes());
System.out.println("write: "+byte2hex(cmd.getBytes())+"\t"+cmd);
}
private void init() throws Exception{
javax.comm.CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier(portName);
port = (SerialPort)portId.open(this.getClass().getName(), 2000);
in = port.getInputStream();
out = port.getOutputStream();
port.setSerialPortParams(115200,port.DATABITS_8,port.STOPBITS_1,port.PARITY_NONE);
//port.enableReceiveFraming(10);
port.enableReceiveTimeout(2000);
//port.addEventListener(this);
mobileInit();
}
private void mobileInit() throws Exception{
write("AT");
String output;
do{
Thread.sleep(20);
output = read();
if (output != null){
System.out.println("Output:"+output);
break;
}
write("AT");
}while(true);
}
public void close() throws java.io.IOException{
in.close();
out.close();
port.close();
}
public static void showPorts(){
java.util.Enumeration all = javax.comm.CommPortIdentifier.getPortIdentifiers();
while (all.hasMoreElements()){
javax.comm.CommPortIdentifier com = (javax.comm.CommPortIdentifier)all.nextElement();
System.out.println(com.getName()+"\t"+com.isCurrentlyOwned()+"\t"+com.getCurrentOwner());
}
}
//字节码转换成16进制字符串
public static String byte2hex(byte[] b) {
String hs="";
String stmp="";
for (int n=0;n stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length()==1)
hs=hs+"0"+stmp;
else hs=hs+stmp;
if (n }
return hs.toUpperCase();
}
public void serialEvent(SerialPortEvent event){
System.out.println("Event:"+event.getEventType());
try{
if (event.getEventType() == event.DATA_AVAILABLE){
System.out.println("Read String:"+read());
}
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
new Test();
}
}
分享到:
相关推荐
在本项目中,我们将使用两个舵机来构建一个简单的机械臂,通过51单片机的串口接口,接收来自外部设备(如计算机或手机)的指令,从而控制机械臂的运动。 首先,我们要了解51单片机的串口通信协议。51单片机通常使用...
Test.javapackage steeven.mobile;import javax.comm.*;/*** < p>Title: ... /p>* @author phpme@citiz.net* @version 1.0** Software requirement:* http://java.sun.com/products/javacomm (串口支持API)* Hard
《微霸串口控制技术详解》 在现代的嵌入式系统开发中,串口通信是一种常见的硬件接口,用于设备间的通信。微霸串口控制是这样一种技术,它允许开发者通过串行端口对设备进行精准的开关控制。本文将深入探讨微霸串口...
Java串口编程是一种在Java应用程序中与物理串行端口进行通信的技术,广泛应用于设备控制、数据采集、物联网(IoT)等领域。本实例将详细讲解如何使用Java进行串口通信,并提供一个Java手机串口短信发送的代码示例。 ...
总的来说,安卓APP通过串口控制Zigbee涉及到的知识点包括:安卓应用开发、串口通信库的使用、Zigbee协议的理解、设备配置和命令构造。通过实践和学习,你可以掌握这一技术,为智能家庭和物联网应用创造更多可能性。
在这个实例中,VB用于编写控制手机串口发送短信的代码。 3. **PDU编码方式**:PDU(Protocol Data Unit)编码是GSM网络中用于短信传输的一种标准格式。它将短信内容转换为二进制数据,包括消息类型、电话号码、消息...
支持udp\tcp,串口、web、语音识别控制、键盘控制。 支持视频图片、音频、ppt,网页h5,网络串流、采集卡等设备一键无缝切换。 支持全屏拉伸模式,和保持视频原有比例模式播放。 支持多主机同步播放,设置简单。 ...
在手机串口通讯中,通过发送特定的AT指令,可以控制手机的网络连接、读取SIM卡信息,甚至进行文件传输等操作。 在易语言中实现手机串口通讯AT指令,你需要了解以下几个关键步骤: 1. **初始化串口**:首先,你需要...
尽管现代计算机更倾向于使用USB等高速接口,但在嵌入式系统和工业控制领域,串口因其简单、稳定和成本效益高等特点依然广泛应用。常见的串口有RS-232、RS-485等标准。 短信猫,全称为GSM modem,是一种能够通过SIM...
【标题】"手机蓝牙控制MeArm程序"涉及的是利用Arduino微控制器通过蓝牙模块来远程操控一个名为MeArm的简易机械臂。MeArm是一种开源硬件项目,设计用于教育和娱乐,帮助初学者理解机器人技术和机械工程的基本原理。这...
串口控制程序则是通过串行通信接口,如UART(通用异步收发传输器),使外部设备(如电脑或手机)能够发送指令给舵机控制程序。串口通信协议包括RS-232、USB或蓝牙等,它们定义了数据传输速率、起始位、停止位以及...
【标题】"CSharp超简单的串口发送短信程序"揭示了这个项目是使用C#编程语言实现的一个简单应用,主要用于通过串行接口发送短信。在IT领域,串口通信是一种常见的设备间数据传输方式,特别是在嵌入式系统或工业控制...
本文将围绕“基于CC2541 BLE串口透传程序”这一主题,深入解析如何利用CC2541芯片实现手机APP与单片机之间的通讯。 CC2541是一款由Texas Instruments(TI)公司推出的高性能、超低功耗的BLE控制器。它集成了完整的...
尤其是手机蓝牙串口助手,它作为一个便捷的工具,使得单片机与蓝牙模块之间的数据交换变得简单而高效。本文将深入探讨手机蓝牙串口助手的工作原理、应用场景以及如何使用。 首先,我们要理解手机蓝牙串口助手的核心...
### C# 实现串口短信猫发送手机短信息 #### 概述 本文将详细介绍如何使用C#通过串口通信来实现短信猫发送手机短信的功能。短信猫是一种可以通过串行接口连接到计算机,并通过AT命令集发送和接收短消息的服务设备。...
4. **串口通信**:描述中提到程序通过串口接收数据,这是常见的嵌入式系统与上位机(如PC或手机)交互的方式。串口通信通常使用UART(通用异步收发传输器)接口,可以实现简单的数据传输。 5. **数据转换**:数据...
然后,通过特定的串口配置,你可以打开这个程序,连接到手机的串口,进行模块的检测。这可能包括发送AT命令(异步终端命令)来查询模块的状态,测试短信发送和接收,以及检查网络连接是否正常。 总的来说,"SMS.rar...
本文将深入探讨如何使用Microsoft Foundation Classes (MFC)库来实现手机串口通信,以便通过电脑终端向手机发送AT指令,进而控制手机的各种功能。 首先,让我们了解什么是MFC。MFC是微软提供的一套C++类库,它基于...
标题中的“用vb写的GSM短信程序”是指使用Visual Basic(VB)编程语言开发的一款应用程序,该程序能够实现与GSM模块或手机的串行通信,以发送和接收短信。VB是微软公司推出的一种面向对象的编程语言,适用于快速开发...
在实际应用中,你还可以进一步扩展这个项目,例如,通过Wi-Fi或蓝牙模块使RGB灯受手机应用程序控制,或者添加一个简单的协议来支持更多的颜色模式,如呼吸灯、渐变色等。 总之,通过这个项目,你将学习到如何利用...