连接确认是当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的信息发送给客户端,一旦客户端确认了此连接,连接即可建立。而服务器端继续处于监听状态,继续接收其他客户端的连接请求。
使用套接字进行数据处理有两种基本模式:同步和异步。
(1)同步模式:
同步模式的特点是在通过Socket进行连接、接收、发送数据时,客户机和服务器在接收到对方响应前会出于阻塞状态,即一直等到收到对方请求进才继续执行下面的语句。可见,同步模式只适用于数据处理不太多的场合。当程序执行的任务很多时,长时间的等待可能会让用户无法忍受。
(2)异步模式:
异步模式的特点是在通过Socket进行连接、接收、发送操作时,客户机或服务器不会处于阻塞方式,而是利用callback机制进行连接、接收、发送处理,这样就可以在调用发送或接收的方法后直接返回,并继续执行下面的程序。可见,异步套接字特别适用于进行大量数据处理的场合。 使用同步套接字进行编程比较简单,而异步套接字编程则比较复杂。
3 控制协议理解
本次课题是实现对温控器的远程控制,主要分三块,控制协议,控制端,温控器端。控制协议,按照HAI智能家居RC-1000和RC-2000型温控器设计,这也是本次任务的最重要的一环,将在下详细说明。
3.1 协议
温控器将对格式化的信息回复。温控器不初始化信息。这个协议是半双工的,意思是,温控器发送数据的时候不接受任何数据,主机和温控器不能同时发送数据。
a字节格式:1个起始位,8个信息位,1个停止位,无奇偶校验,最低有效位先发送。
b信息速率:100,300,1200,2400,和9600波特率。
c信息格式:
第一个字节:开始地址或者远程地址;
0-6位:远程地址(0-127,0=广播,250=通用地址)
7位:1表示温控器回复,0表示主机信息
第二个字节:数据长度,信息类型
4-7位:数据长度(0-15),ASCII码无效
0-3位:数据类型
第3—n字节:数据;0—15字节
第n+1字节:总和检查码(checksum),求和1—n字节得到总和校验码。
3.2 主机时序要
A主机初始化查询,当温控器传输的时候,主机不能发起轮询。
B温控器会对一个轮询回复一个响应。
C温控器不回复广播信息。
D综合校验码失效,温控器将不会采取行动或回复信息。
E内部信息超时:1.25秒。如果温控器没有回复,主机需要在传输信息结束后等待至少1.25秒才能重新发送信息。
F信息超时:在信息的字节之间,不能超过500ms的空隙时间。
G温控器最多用30ms设置寄存器。设置的时候,温控器会在存入EEPROM后回复。这时候主机可以立即发送下一个信息。如果是广播消息,温控器讲不会回复。而且接收器将不会工作,直到所有寄存器被写入。因此,用广播消息,主机必须等待至少30ms在设置寄存器的时候。才能进行后续操作。最差的情况,一个广播消息要设置14个寄存器,那么要等待420ms才能发送其他消息。
3.3 温控器错误处理和位时序
A错误处理,如果发生错误,或者校验码出错,温控器将忽略剩余的信息。必须等待500ms。
B位时序在消息中的最后一个字节的起始位开始的整数间隔的每一位的中间发生回复。
3.4 信息类型
A主机到温控器:
(0)寄存器登记
这条消息需要1到14个寄存器被回复,在一个数据消息中。 基于互联网的远程控制协议设计与实现(8):http://www.youerw.com/jisuanji/lunwen_6134.html