电脑和手机互通!!!
要写一个手机与电脑互通的软件
比如:可以通过电脑写短信并发送,或者用手机控制电脑的开关,等等。。
请问 各位大虾
要写这样的软件该怎样着手呢?
有哪些步骤?
谢谢!!
问题点数:0、回复次数:28Top
1 楼MyNetworks(弟大物勃)回复于 2004-05-06 10:39:03 得分 0
电脑控制手机可以用ETSI制定的标准AT命令,在电脑上实现就是传统的串口编程。手机控制电脑怕不好实现。
Top
2 楼sunwhite()回复于 2004-05-07 21:36:22 得分 0
一般来讲手机和电脑通讯采用串口或者USB,但不论用哪个,最终都要转换成串口通讯。
对于发送短信这样的功能,采用AT命令即可。Top
3 楼renhao110(一笑而过)回复于 2004-05-08 21:15:00 得分 0
问一个菜鸟的问题什么叫at呀Top
4 楼wunifeng(蛐蛐)回复于 2004-05-09 01:23:49 得分 0
对于楼主的问题,电脑写短信发送:串口编程+at指令就可以搞定。
手机控制电脑开关确实。。。。。。。。。很难
at指令是一些串口设备能够读懂的“命令”,可以用at指令来控制这些串口设备完成一定的工作Top
5 楼start001(需要人气!!!)回复于 2004-05-09 10:06:50 得分 0
完全可以,不过要安装一个俺的软件才可以。Top
6 楼surge_diligent()回复于 2004-05-09 17:33:38 得分 0
完全自己搞是不行的;你在手机公司任职是可以的!Top
7 楼tompkins2000(AirHunter)回复于 2004-05-09 20:06:29 得分 0
完全可以自己做,网上有很多资料可找。不过不同的手机AT指令可能有所不同。Top
8 楼9527(做人好累,下辈子我要做棵大树)回复于 2004-05-10 09:04:54 得分 0
很简单,分成两部分就是了
1、计算机控制收发短信
2、解析短信命令格式控制计算机
1中看串口编程和短信相关的几个命令就可以了
2中windows相关API,想做的好的话和手机本身没有直接关系
没有什么不行的Top
9 楼9527(做人好累,下辈子我要做棵大树)回复于 2004-05-10 09:07:59 得分 0
1中看串口编程和短信相关的几个AT命令就可以了Top
10 楼kejian(御剑飞仙)回复于 2004-06-09 12:48:39 得分 0
如果用解释短信消息的形式控制电脑关机,那你得在电脑终端也得连一台移动设备.
这个好处是可以随时随地关机.
还有就是用蓝牙控制,电脑终端得安有蓝牙适配器.一两百.
不过控制距离最远只有二十米.
蓝牙不用money短信...Top
11 楼LIJUNCN()回复于 2004-07-02 12:17:33 得分 0
请问AT指令咋个用喃?Top
12 楼nlnc(风之8号)回复于 2004-07-03 20:14:42 得分 0
AT指令集,串口通讯,PDU编解码。
软件及手机通讯COM组件:www.fhxysoft.com/download/ydf_1_full.rar
AT指令集:www.fhxysoft.com/download/at.rar
www.fhxysoft.com
Top
13 楼guo_hai13()回复于 2004-07-06 17:15:05 得分 0
手机通过WAP应用执行计算机关机程序就行了,很简单Top
14 楼spook_l(睿懿)回复于 2004-07-14 17:02:25 得分 0
upTop
15 楼upsoft(upsoft)回复于 2004-07-19 17:28:42 得分 0
mark一下~~~Top
16 楼jimmyzzbb(口是心非)回复于 2004-07-23 20:43:25 得分 0
AT 就是 接收终端
AN 就是 接入网Top
17 楼nmywg(cpu)回复于 2004-07-23 23:15:51 得分 0
关注Top
18 楼jacksyh(杭杭)回复于 2004-07-24 12:50:13 得分 0
期待更多!Top
19 楼jimmyzzbb(口是心非)回复于 2004-07-25 19:45:25 得分 0
现在网上的电脑发短信经历的流程一般如下
PTSN ---> MSC --> BSC -->BTS --> MS
至于手机控制电脑主要看电脑是在网络的什么位置,最简单的就是MS经过一个空口协议就可以控制电脑。
MS --->BSS ---> ComputerTop
20 楼playzwd(沙漠绿洲)回复于 2004-07-28 12:52:14 得分 0
太~~~~~~~~~~太~~~~~~~~~~~~~太容易了Top
21 楼Jasonsystem(梦之子)回复于 2004-08-18 02:38:16 得分 0
哪位高手能给出详细的编写流程的相关的程序呢!? 小弟是个初哥希,望大家多多指教!Top
22 楼awjx(啦啦啦)回复于 2004-08-18 11:31:23 得分 0
怎么没有人用MSCOMM32.OCX控件呢?
听说是最简单的方法,最近也在研学习。
不会真的都在用WIN API写串口吧!Top
23 楼zzhouj(Justin)回复于 2004-08-19 10:53:55 得分 0
可以绕过手机的AT层,直接对手机的UART进行编程,即可实现通过手机操作PC。但是实际应用的情形往往相反,一般是PC控制手机或PDA的操作。Top
24 楼wx3435720(Libra)回复于 2004-08-22 18:13:54 得分 0
具体的关于AT的内容,你可以参看GSM07.07
还有不是手机支持的命令不同,而是手机对整个
命令集合的支持程度不一
而且有些手机还扩展了标准的指令集合
Top
25 楼zhangjiechen()回复于 2004-08-24 12:51:19 得分 0
我用J2ME实现了用手机控制电脑开关机很简单,在电脑上开一个WEB服务器,用HTTP协议使手机连接互联网访问电脑,WEB服务器解析手机命令就可以控制本机,服务器端用JSP/Servlet或ASP都可以。
主要代码可以给你
手机端
package controlitem;
import java.lang.*;
import java.io.*;
import java.util.*;
import javax.microedition.io.*;
public class ConnectionManager
{
private HttpConnection con;
private InputStream is;
private OutputStream os;
private String baseurl = "http://10.1.49.51:7001/Mobile_Server/servlet1?cmd=";
private String ua;
private String locale;
private String msg;
private String user;
private String password;
public ConnectionManager()
{
System.out.println("初始化ConnectionManager");////////////////////
StringBuffer sb = new StringBuffer(60);
sb.append("configuration/");
sb.append(System.getProperty("microedition.configuration"));
String prof = System.getProperty("microedition.profiles");
System.out.println("prof is " + prof);////////////////////
int i = 0,j = 0;
while((j = prof.indexOf(' ',i))!= -1)
{
sb.append(" Profiles/");
sb.append(prof.substring(i,j));
i = j + 1;
}
sb.append(" Profile/");
sb.append(prof.substring(i));
ua = sb.toString();
System.out.println("sb is" + sb + "ua is " + ua);////////////////////////
locale = System.getProperty("microedition.locale");
System.out.println("locale is" + locale);///////////////////////
if(locale == null)
{
locale = "en-UD";
}
System.out.println("初始化完毕");///////////////////////////
}
byte[] Progress()//处理连接,获得回复信息
{
byte[] data = null;
try
{
open();//打开连接
int n = (int)con.getLength();//响应信息的长度
if(n>0)
{
int bytesread = 0;
data = new byte[n];
for(int offset = 0;offset<n;offset += bytesread)
{
bytesread = is.read(data,offset,n-bytesread);
}
}
}
catch(IOException ioe)
{
System.out.println("error here!!!!!! " + ioe.getMessage());
}
finally
{
try
{
if(con!= null)
{
con.close();
}
if(os != null)
{
os.close();
}
if(is != null)
{
is.close();
}
}
catch(IOException ioe)
{
System.out.print("error here @@@@@@@@@@");
}
return data;
}
}
private void open() throws IOException
{
int status = -1;
String url = baseurl;
String auth = null;
is = null;
os = null;
con = null;
while(con == null)//一直循环直到连接被建立
{
System.out.println("开始打开连接!url=" + url );////////////////////////
con = (HttpConnection)Connector.open(url);
con.setRequestMethod(HttpConnection.POST);
con.setRequestProperty("User-Agent",ua);
con.setRequestProperty("Accpet-Language",locale);
con.setRequestProperty("Content-Type","text/plain");
con.setRequestProperty("Accept","text/plain");
if(user != null&&password != null)
{
con.setRequestProperty("Authorization","Basic ");//此处应该加入64base的用户名和密码 +BasicAuth.encode(user,password)
}
os = con.openOutputStream();//打开输出流会清空所有的响应头
System.out.println("输出流已打开" );////////////////////
os.write(msg.getBytes());//把消息写入输出流
os.close();
os = null;
System.out.println("输出流已关闭");////////////////////
status = con.getResponseCode();//检查返回的状态码
System.out.println("status is " + status);/////////////////
switch(status)
{
case HttpConnection.HTTP_OK://成功
break;
case HttpConnection.HTTP_TEMP_REDIRECT:
case HttpConnection.HTTP_MOVED_TEMP:
case HttpConnection.HTTP_MOVED_PERM:
url = con.getHeaderField("location");//重定向,取得新的目标地址
con.close();
con = null;
break;
default://错误,抛出一个异常
con.close();
throw new IOException("Response status not OK:" + status);
}
}
is = con.openInputStream();//打开输入流。使调用者可以读取响应信息
}
void setMsg(String s)
{
msg = s;
}
void setUser(String s)
{
user = s;
}
void setPassword(String s)
{
password = s;
}
void appendUrl(String append)
{
baseurl += append;
}
}
服务器端(Servlet)
package mobile_server;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class Servlet1 extends HttpServlet
{
String execCmd;
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String cmd=request.getParameter("cmd");
if(cmd == null)
cmd = "nocmd";
if(cmd.equals("sendinfo"))
{
String ip = request.getParameter("ip");
String info = request.getParameter("info");
if(info == null||info.length()==0) info="";
execCmd = "net send " + ip + " " +info;
System.out.println("execCmd is " + execCmd);
Runtime time = Runtime.getRuntime();
time.exec(execCmd);
}
else if(cmd.equals("rebootComputer"))
{
execCmd = "tsshutdn /reboot";
Runtime time = Runtime.getRuntime();
time.exec(execCmd);
}
else if(cmd.equals("shutdownComputer"))
{
execCmd = "tsshutdn";
Runtime.getRuntime().exec(execCmd);
}
else
{
System.out.print("no cmd!");
}
}
}
Top
26 楼soil(土土)回复于 2004-08-27 21:44:15 得分 0
http://ms.mblogger.cn/soil/category/1984.aspxTop
27 楼willstar(蓝色稻草人)回复于 2004-09-21 13:07:07 得分 0
upTop
28 楼LIJUNCN()回复于 2004-09-30 10:46:04 得分 0
up
?????Top




