Project AConnect.

AConnect

(单片机远程通信解决方案之一)

作者:lizeqiangd

地址:http://www.acgs.me/wordpress/topic/aconnect_manual/

邮箱:i@acgs.me

首先这是一套功能服务程序。用的Adobe Air做的。基于沙箱问题,他目前没有办法访问到串口,因此你需要下载串口代理。程序在文件夹内。

串口代理软件里面打开右边,

win7的朋友点开【右边的箭头】 然后在【通讯类型】里面 选择【串口代理】

 

在这个界面下面 选择你【串口号】 【代理端口号】(是Socket的,等会客户端软件可以更改) 然后点击【打开串口】【启动代理】

 

这样你的Arduino或者STC51使用串口发送的数据就会发送到电脑上,并将电脑作为Socket服务器发送到指定的端口上,以便客户端软件获取

 

之后你需要打开文件夹【AConnectClient】理论上都能用,不需要装什么插件。不能用或者什么bug的话请去adobe官网下载最新的air。 然后打开文件夹里面的【AC_Remote.exe】程序。程序的界面如下。

程序本身已进入就会使用RTMP协议连接至我的服务器,该协议是Adobe自己弄的,我使用起来方便快捷,还有一点好处就是他速度快。具体是不是不做探讨,至于你信不信?反正我是信了。

左上角的本机识别名目前并没什么意义,下面的cid代表你这个客户端的id,等会手机遥控或者其他远程遥控都需要这个cid。

点击左上角的后,会打开一个应用,用来进行与网络连接的

当服务器连接断开的时候,比如你电脑待机啊休眠啊之类的,左上角会变成closed。

你就需要打开这里然后点击下面你的【开始连接】。

看到右上角显示connected就代表你成功连接到服务器了。

 

程序界面介绍:

 

1.网络上接受的信息,并将信息内容发送到单片机上

上面的框是显示从网络上面发到你电脑的信息,或者是【本机发送】的内容,这些信息会通过串口发送到单片机上。没有做滚动条,但是可以用鼠标滚轮在上面滚动。

 

2.单片机发回信息显示

下面的框是显示从单片机发回到电脑的信息[1]:xxxxx。这里会显示是否链接到socket。而且这些信息还会转发到你设置cid的客户端上。

 

如果你之前的串口代理开成功了,这个软件会显示Connection:connected. 如果显示 ioerror 或者 安全错误,那就是你的端口低于8000或者端口错了。 默认软件设置的端口是[8088]。 软件下面可以更改。

3.在没有网络遥控的情况下,本机直接输入命令测试。

本机测试用输入框是本机直接输入一串String给单片机,STC51的用户就比较惨,处理比较麻烦,但是我等会给范例。

4.其他信息和功能按钮

在没有在下面输入文字的时候,是不转发信息的,输入后按回车或者点击右边的按钮,就可以将你从单片机收到的信息转发到手机或者其他客户端上。

本客户端信息是显示本机的cid和显示名用,和左上方是一样的。

这里是socket服务器的地址和端口

如果更改了端口,请点击断开连接后再重新连接,在2中显示connected代表连接成功。

 

在Android和iOS下,遥控界面如下:

右边的文字框内输入要遥控的客户端号码,,这里就是20988输入到手机即可。

 

手机界面只有9个按钮,用于发送给单片机9个字符串,分别是command1$到command9$。

本机发送的时候是自动在末尾添加$的

例子:按下手机中的command1按钮再按下command2按钮,相当于本机发送处填写如下:

就相当于直接发送了2条指令给单片机。

 

ARDUINO 代码

  1. String incomingString=“”;
  2. char breakChar=‘$’;
  3. char incomingByte;
  4. void
    loop()
  5. {
  6.   if(Serial.available()>0){
  7.     for(int ai=0;Serial.available();ai++){
  8.     incomingByte=char(Serial.read());
  9.     if(incomingByte==breakChar){
  10.     //Here puts your code 这里放你要识别的String内容
  11.       Serial.print(“{received:”);
  12.       Serial.print(incomingString);
  13.       Serial.print(‘}’);
  14.       Serial.print(breakChar);
  15.       //这里只是将收到的内容按照 json格式发回到电脑而已。
  16.       incomingString=“”;
  17.       }else{
  18.         incomingString +=incomingByte;
  19.         }
  20.       }
  21.        }
  22.       //….这里是你其他代码   上面只负责把所有收到的文字根据$分开,处理而已。
  23. }

STC C 代码

  1. #include”string.h”
  2. char GetC;
  3. char commandWord[30];
  4. void Uart() interrupt 4 using 1
  5. {
  6.            if
    (RI)
  7.     {
  8.         RI = 0;                 //清除RI
  9.         GetC = SBUF;              //P0显示串口数据
  10.                 if(SBUF==‘$’){
  11.                 if(!(strcmp(commandWord,“command1”))){
  12.                  P00=!P00;
  13.                 }
  14.                 if(!(strcmp(commandWord,“command2”))){
  15.                  P01=!P01;
  16.                 }
  17.                 if(!(strcmp(commandWord,“command3”))){
  18.                  P02=!P02;
  19.                 }
  20.                 memset(commandWord,0,30);
  21.                 }else{
  22.                 memset(commandWord+strlen(commandWord),GetC,1) ;
  23.                 //strcat(commandWord,GetC);
  24.          }
  25.     }
  26.     if
    (TI)
  27.     {
  28.         TI = 0;                 //清除TI
  29.         busy = 0;               //清忙标志
  30.     }
  31. }

 

整套程序打包下载地址:2013.07.19更新

http://pan.baidu.com/share/link?shareid=1865421486&uk=2902866394

所用项目

EinStation @ Lizeqiangd 2012

AConnect @ Lizeqiangd 2013

ZweiteHorizont @ Lizeqiangd 2013

Lizeqiangd’s Lab © 2013 Email:i@lizeqiangd.com

  1. 好评,但是为何我的目光聚焦在了黑岩身上= =

  1. 暂无 Trackback

return top