通讯协议——ASI2x1

基本功能描述

计算机或控制器通过以太网口或者RS232接口发出指令,包括查询指令,切换指令等,主机箱中的控制板在收到这些指令之后,将这些数据通过485总线转发给对应的主板,并将结果回传给发出指令的计算机或控制器。控制器或计算机发出切换指令后,等待主机箱中的控制板发出刷新指令,以改变显示。主机箱中,控制板以一定时间为间隔不断查询主板的状态,并发出刷新指令将查得的信息更新给计算机或控制器。

通过网络控制时,网管软件必须每隔在30秒内向切换器发出如下字符:

*?#    (其中*和#分别是起始字符和结束字符)

网络模块应答 *@#

切换器端如果在30秒内没有收到此握手字符或者其他有效字符(任何按照协议规定的切换或查询指令),将断开TCP网络连接,控制软件必须重新建立网络连接

通讯协议

字符定义:SOH: ASCII码“*”,起始标志字符

EOT: ASCII码“#”,结束标志字符

ACK: ASCII码“0x06”,正确应答字符

NAK: ASCII码“0x15”,错误应答字符

默认速率为 9600,N,8,1

以下协议中蓝色部分为关键字,棕褐色部分为变量;带单引号‘’的是ASCII码。

注意区分大小写字母SOH之后的3个字母一般为大写字母。

 

1:状态查询指令

    (1) 主板状态查询指令

SOH 
‘R’‘D’  ‘Z’‘0’  CHECK
SUM 
EOT

该指令的作用是查询指定的某一块主板的状态。

这里,‘RD’为查询指令的关键字。

‘Z’
后面一位十六进制数表示要查询的板号。因每个机箱最多可插入8块切换板,该数为0~7之间的数。

CHECK_SUM为校验和,现为预留。可用‘--’代替。下同。

――应答指令如下:

SOH ‘D’‘R’
‘Z’‘0’‘S’ ‘0’ ‘0’ CHECK
-SUM 
EOT

‘DR’表示对
‘RD’指令的应答。

‘Z’后面一位十六进制数表示要查询的板号。

‘S’后面两位十六进制数(8个比特位)。其中,

比特0(最低位)表示手动或自动:1——表示手动,0——表示自动;

比特1表示当前输出路数:0——代表主路,1——代表备路;

比特2表示主路信号状态:1——表示有,0——表示无;

比特3表示备路信号状态:1——表示有,0——表示无;

比特4表示主路同步错误:1——表示有同步错误,0——表示无同步错误;

比特5表示备路同步错误:1——表示有同步错误,0——表示无同步错误;

       比特6表示主路PID丢失:1——表示有PID丢失,0——表示无PID丢失;

比特7表示备路PID丢失:1——表示有PID丢失,0——表示无PID丢失。

如果出现错误,例如,电路板没有应答,则应答结果如下:

SOH 
‘D’ ‘R’ ‘Z’‘0’‘T’ ‘O’ 
CHECK
-SUM 
EOT

‘T’ ‘O’ 是TIME OVER即超时的意思,表示在规定的时间内没有收到应答信号,或者是板子不存在,或者是板子故障。

     (2) PID状态查询指令

SOH 
‘R’‘Q’  ‘Z’‘0’  CHECK
SUM 
EOT

该指令的作用是查询指定的某一块主板的某一路TS流里某一个PID的状态。

这里,‘RQ’为查询指令的关键字。

‘Z’
后面一位十六进制数(4个比特位)。其中,

低3位(比特0~2)表示要查询的板号;

最高位(比特3)表示主路或备路:0——代表主路,1——代表备路。

――应答指令如下:

SOH ‘Q‘R’
‘Z’‘0’ ‘S’ ‘0’ ‘0’ ‘W’ ‘0’ ‘0’ ……CHECK-SUM 
EOT

‘Z’
后面一位十六进制数(4个比特位)。其中,

低3位(比特0~2)表示要查询的板号;

最高位(比特3)表示主路或备路:0——代表主路,1——代表备路。

‘S’后面两位十六进制数表示所检测的PID数量;

‘W’后面的十六进制数表示对应PID状态有无。

第一个数代表第一到第四个检测PID的状态,

4
比特数据:

比特0 表示第一个PID状态 :0—表示无此PID,1---表示有此PID;

比特1 表示第二个PID状态 :0—表示无此PID,1---表示有此PID;

比特2 表示第三个PID状态 :0—表示无此PID,1---表示有此PID;

比特3 表示第四个PID状态 :0—表示无此PID,1---表示有此PID;

第二个数代表第五个到第八个PID状态同样低位为先;以此类推。

如果出现错误,例如,电路板没有应答,则应答结果如下:

SOH 
‘Q’ ‘R’ ‘Z’‘0’‘T’ ‘O’ 
CHECK
-SUM 
EOT

‘T’ ‘O’ 是TIME OVER即超时的意思,表示在规定的时间内没有收到应答信号,或者是板子不存在,或者是板子故障。

2:PID列表查询指令

SOH 
‘R’ ‘P’  ‘Z’‘0’  CHECK
SUM 
EOT

该指令的作用是查询指定通道TS流里PID的列表。

这里,‘RP’为PID列表查询指令的关键字。

‘Z’
后面一位十六进制数(4个比特位)。其中,

低3位(比特0~2)表示要查询的板号;

最高位(比特3)表示主路或备路:0——代表主路,1——代表备路。

――应答指令如下:

SOH 
‘P’ ‘R’‘Z’‘0’  ‘nn’
‘y’‘××××’
‘y’‘××××’
‘y’‘××××’……
CHECK-SUM 
EOT

‘PR’表示对
‘RP’指令的应答。

‘Z’
后面一位十六进制数(4个比特位)。其中,

低3位(比特0~2)表示要查询的板号;

最高位(比特3)表示主路或备路:0——代表主路,1——代表备路。

‘nn’
是两位十六进制数,8比特数据:

比特0至比特5
这6比特二进数字代表PID数量范围0-63;

比特 7
、6  代表后面所开始的PID的序号,00
代表其后为第一个PID

01代表其后为第17个PID,

10代表其后为第33个PID;

11代表其后为第49个PID。

每条指令最多传输16个PID值。

位有效,高位为先。

序号依次加一。

如果出现错误,例如,电路板没有应答,则应答结果如下:

SOH 
‘P’ ‘R’ ‘Z’‘0’‘T’ ‘O’ 
CHECK
-SUM 
EOT

‘T’ ‘O’ 是TIME OVER即超时的意思,表示在规定的时间内没有收到应答信号,或者是板子不存在,或者是板子故障。

注:该指令得到的是自上次清空指令之后,码流之中存在过的所有PID列表,未必是实时结果,如果想得到即时结果,请与清空指令组合使用。

3:所设置PID列表查询指令

SOH 
‘R’ ‘O’  ‘Z’‘0’  CHECK
SUM 
EOT

该指令的作用是查询指定通道TS流里PID的列表。

这里,‘RO’为PID列表查询指令的关键字。

‘Z’
后面一位十六进制数(4个比特位)。其中,

低3位(比特0~2)表示要查询的板号;

最高位(比特3)表示主路或备路:0——代表主路,1——代表备路。

――应答指令如下:

SOH 
‘O’ ‘R’‘Z’‘0’  ‘nn’
‘y’‘××××’
‘y’‘××××’
‘y’‘××××’……
CHECK-SUM 
EOT

‘OR’表示对
‘RO’指令的应答。

‘Z’
后面一位十六进制数(4个比特位)。其中,

低3位(比特0~2)表示要查询的板号;

最高位(比特3)表示主路或备路:0——代表主路,1——代表备路。

‘nn’
是两位以ASCII码表示的十六进制数,8比特数据:

比特0至比特5
组成6比特二进数字代表PID数量范围0-63;

比特 7
、6  代表后面所开始的PID的序号:

00代表其后为第一个PID;

01代表其后为第17个PID;

10代表其后为第33个PID;

11代表其后为第49个PID。

每条指令最多传输16个PID值。

位有效,高位为先。

‘y’为分割每个PID的标识字符。

如果出现错误,例如,电路板没有应答,则应答结果如下:

SOH 
‘O’ ‘R’ ‘Z’‘0’‘T’ ‘O’ 
CHECK
-SUM 
EOT

‘T’ ‘O’ 是TIME OVER即超时的意思,表示在规定的时间内没有收到应答信号,或者是板子不存在,或者是板子故障。

4:查询自动切换设置指令

a.
查询自动切换使能指令

SOH 
‘R’ ‘Y’ ‘
Z’ ‘0’ ‘y’ CHECKSUM
 EOT

该指令的作用是查询某一块主板是否允许靠信号有无、同步错误、PID丢失自动切换。

――应答指令如下:

SOH 
‘Y’ ‘R’ ‘
Z’ ‘0’ ‘y’ ‘0’ CHECKSUM
 EOT

‘Z’
后面一位十六进制数表示要查询的板号。

比特数字:注:y为小写字母。

比特0表示是否允许靠信号有无自动切换:1
表示允许,0表示不允许

比特1表示是否允许靠同步错误自动切换:1
表示允许,0表示不允许

比特2表示是否允许靠PID丢失自动切换:1
表示允许,0表示不允许

最高位(比特3)保留。

b.
查询自动切换时间指令

SOH 
‘R ‘Y’ ‘
Z’ ‘0’ ‘t’ CHECKSUM
 EOT

该指令的作用是查询某一块主板出现错误切换时间。注:t为小写字母。

――应答指令如下:

SOH 
‘Y’ ‘R’ ‘
Z’ ‘0’ ‘t’ ‘0’ ‘0’ CHECKSUM
 EOT

‘Z’
后面一位十六进制数表示要查询的板号。

‘t’后面两位十六进制数表示出现错误切换时间,范围1-200,单位秒。

c.
查询单独pid使能指令

SOH 
‘R’ ‘Y’ ‘
Z’ ‘0’ ‘q’CHECKSUM
 EOT

该指令的作用是查询某一块主板所检测的PID是否依靠对应PID切换。

――应答指令如下:

SOH 
‘Y’ ‘R’ ‘
Z’ ‘0’
‘q’ ‘0’
‘0’‘p’ ‘0’ ‘0’
……CHECKSUM
 EOT

‘Z’
后面一位十六进制数表示要查询的板号。

‘q’后面两位十六进制数表示所检测的PID数量。注:p,q为小写字母。

‘p’后面的十六进制数表示是否依靠对应PID切换:

第一个数代表第一到第四个检测的PID的状态,

4
比特数据:

比特0 表示是否靠第一个PID切换:1
表示允许,0表示不允许;

比特1 表示是否靠第二个PID切换:1
表示允许,0表示不允许;

比特2表示是否靠第三个PID切换:1
表示允许,0表示不允许;

比特3 表示是否靠第四个PID切换:1
表示允许,0表示不允许。

第二个数代表第五个到第八个PID设置状态同样低位为先;以此类推。

事实上,‘q’后面两位十六进制数表示的PID数量(a)与‘p’后面ASCII码的数量(b)具有如下关系:当a>0时,b=(a-1)/4+1;当a=0时,b=0。

如果出现错误,例如,电路板没有应答,则以上三条指令的应答结果都如下:

SOH 
‘Y’ ‘R’ ‘Z’‘0’‘T’ ‘O’ 
CHECK
-SUM 
EOT

‘T’ ‘O’ 是TIME OVER即超时的意思,表示在规定的时间内没有收到应答信号,者是板子不存在,或者是板子故障。

5:自动切换设置指令

a.自动切换使能指令

SOH 
‘W’ ‘Y’ ‘
Z’ ‘0’ ‘y’ ‘0’ CHECKSUM
 EOT

该指令的作用是设置某一块主板是否允许靠信号有无、同步错误、PID丢失自动切换。

‘Z’
后面一位十六进制数表示要查询的板号。

比特数字:(注:y为小写字母。)

比特0表示是否允许靠信号有无自动切换:1
表示允许,0表示不允许;

比特1表示是否允许靠同步错误自动切换:1
表示允许,0表示不允许;

比特2表示是否允许靠PID丢失自动切换:1
表示允许,0表示不允许;

最高位(比特3)保留。

b.自动切换时间指令

SOH 
‘W’ ‘Y’ ‘
Z’ ‘0’ ‘t’ ‘0’ ‘0’ CHECKSUM
 EOT

该指令作用是设置某一块主板出现错误切换时间。

‘Z’后面一位十六进制数表示要查询的板号。

‘t’后面两位十六进制数表示出现错误切换时间,范围1-200,单位秒。注:t为小写。

c.自动切换pid使能指令

SOH 
‘W’ ‘Y’ ‘
Z’ ‘0’‘q’ ‘0’ ‘0’ ‘p’
‘0’ ‘0’
…… CHECK-SUM
 EOT

该指令作用是自动切换某一块主板所检测的PID是否依靠对应PID切换。

‘Z’后面一位十六进制数表示要查询的板号。

‘q’后面两位十六进制数表示所检测的PID数量;

‘p’后面的十六进制数表示是否依靠对应PID切换;

第一个数代表第一到第四个检测的PID的状态。注:p、q为小写字母。

4 比特数据:

比特0 表示是否靠第一个PID切换:1
表示允许,0表示不允许;

比特1 表示是否靠第二个PID切换:1
表示允许,0表示不允许;

比特2表示是否靠第三个PID切换:1
表示允许,0表示不允许;

比特3 表示是否靠第四个PID切换:1
表示允许,0表示不允许。

第二个数代表第五个到第八个PID设置状态同样低位为先;以此类推。

――所有切换指令应答指令如下:

ACK
:数据正确接收。

NAK
‘1’
:数据接收校验错误。

NAK
‘2’
:数据接收错误,无起始位。

NAK
字节。

6:PID列表清空指令

SOH 
‘W’ ‘P’  ‘Z’‘0’  CHECK
SUM 
EOT

该指令用来清空PID列表,重新搜索。

‘Z’
后面一位十六进制数(4个比特位)。其中,

低3位(比特0~2)表示要处理的板号;

最高位(比特3)表示主路或备路:0——代表主路,1——代表备路。

――PID列表清空指令应答指令如下:

ACK
:数据正确接收。

NAK
‘1’
:数据接收校验错误。

NAK
‘2’
:数据接收错误,无起始位。

NAK
字节。

7:切换指令

SOH 
‘W’ ‘R’ ‘
Z’ ‘0’ ‘y’ ‘0’ 
CHECK
SUM
 EOT

该指令用来切换自动或手动和主路或备路。

这里,‘WR’为切换指令的关键字。

‘Z’后面一位十六进制数表示要查询的板号。

当块板。

比特数字,(注:y为小写字母。)

比特0表示自动或手动切换:1
表示手动,0表示自动;

比特1表示主路或备路切换:0
表示主路,1表示备路。

――所有切换指令应答指令如下:

ACK
:数据正确接收。

NAK
‘1’
:数据接收校验错误。

NAK
‘2’
:数据接收错误,无起始位。

NAK
字节。

8:连续设置PID指令

SOH ‘W’‘O’
‘Z’‘0’ ‘nn’
‘y’‘××××’
‘y’‘××××’
‘y’‘××××’……
CHECK-SUM 
EOT

该指令的作用是向指定主板的指定通道里依次写PID。

这里,‘WO’为写PID指令的关键字,其它字符的含义同PID列表查询指令。

‘Z’后面一位十六进制数表示要查询的板号。

nn’
是两位十六进制数,8比特数据:

比特0至比特5
组成6比特二进制数字代表PID数量范围0-63;此数量值是多少其后就应该严格的有多少个‘y’,否则指令将不被识别。

比特 7
、6  代表后面所开始的PID的序号,00
代表其后为第1个PID

01代表其后为第17个PID,

10代表其后为第33个PID;

11代表其后为第49个PID;

总共最多可设置63个PID值,每条指令最多可设置16个PID值。

比特数字中,低13位有效(数据范围0-1FFFH)。(注:y为小写字母。)

――应答指令如下:

ACK
:数据正确接收。

NAK
‘1’
:数据接收校验错误。

NAK
‘2’
:数据接收错误,无起始位。

NAK
字节。

9:单独设置PID指令

SOH ‘W’‘S’
‘Z’‘0’ ‘n’ ‘x’‘
××’‘y’‘××××’ 
‘x’‘××’‘y’‘××××’
……CHECKSUM 
EOT

该指令的作用是设置指定主板的指定通道里的指定PID。

这里,‘WS’为设置PID指令的关键字。

‘Z’后面一位十六进制数表示要查询的板号。

进制数据表示此指令修改多少个(1~8个)PID,单指令最多修改8个PID值。‘n’的值为多少就应该严格的有多少对‘xy’,否则指令将不被识别。

‘x’后面两位十六进制数表示对第几个PID进行修改;范围1-63;

比特数字中低13位有效高位为先。

时表示不检测PID)。(注:x,y为小写字母。)

――应答指令如下:

ACK
:数据正确接收。

NAK
‘1’
:数据接收校验错误。

NAK
‘2’
:数据接收错误,无起始位。

NAK
字节。

 

10:状态刷新指令(此指令从主机发来)

SOH ‘+’
 ‘Z’‘0’‘S’ ‘0’ ‘0’ CHECK
SUM 
EOT

该指令的作用是对某个状态变化的内容进行刷新。当主板状态发生改变时,控制板会自动发出状态刷新指令。

这里,‘+’是刷新指令关键字。‘Z’
后面一位十六进制数表示要对应的板号。

‘S’后面两位十六进制数(8个比特位)。其中,

比特0(最低位)表示手动或自动:1——表示手动,0——表示自动;

比特1表示当前输出路数:0——代表主路,1——代表备路;

比特2表示主路信号状态:1——表示有,0——表示无;

比特3表示备路信号状态:1——表示有,0——表示无;

比特4表示主路同步错误:1——表示有同步错误,0——表示无同步错误;

比特5表示备路同步错误:1——表示有同步错误,0——表示无同步错误;

       比特6表示主路PID丢失:1——表示有PID丢失,0——表示无PID丢失;

比特7表示备路PID丢失:1——表示有PID丢失,0——表示无PID丢失。

如果出现错误,例如,电路板没有应答,则刷新内容如下:

SOH 
‘+’ ‘Z’‘0’‘T’ ‘O’ 
CHECK
-SUM 
EOT

‘T’ ‘O’ 是TIME OVER即超时的意思,表示在规定的时间内没有收到应答信号,或者是板子不存在,或者是板子故障。

11:读写IP地址指令

   写IP地址指令:

SOH 
‘W’ ‘I’‘1’ ‘9’ ‘2’ ‘.’ ‘1’ ‘6’ ‘8’ ‘.’ ‘0’ ‘.’ ‘2’ ‘3’ ‘4’ CHECK
SUM
 EOT
 

该指令的作用是修改主机的IP地址。

这里,‘W’ ‘I’代表指令关键字,192.168.0.234代表修改后的IP地址。

读IP地址指令:

SOH 
‘R’ ‘I’ CHECK
SUM
 EOT
 

该指令的作用是读取主机的IP地址。

这里,‘R’ ‘I’代表指令关键字。

――应答指令如下:

SOH 
‘IR’ ‘1’ ‘9’ ‘2’ ‘.’ ‘1’ ‘6’ ‘8’ ‘.’ ‘0’ ‘.’ ‘2’ ‘3’ ‘4’
 CHECK
-SUM 
EOT

‘IR’表示对
‘RI’指令的应答,192.168.0.234代表矩阵的IP地址。

:当操作指令与该协议中的不一致时,将不被系统识别,系统回复:SOH 
‘?’  EOT
 

:产品出厂默认的IP地址为
192.168.0.247”。

端口号不可更改!每次更改完IP地址后必须重新上电!!!

[完]

ASI通讯协议——ASI2x1的更多相关文章

  1. 基于dubbo框架下的RPC通讯协议性能测试

    一.前言 Dubbo RPC服务框架支持丰富的传输协议.序列化方式等通讯相关的配置和扩展.dubbo执行一次RPC请求的过程大致如下:消费者(Consumer)向注册中心(Registry)执行RPC ...

  2. MODBUS-RTU通讯协议简介

    MODBUS-RTU通讯协议简介   什么是MODBUS? MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规 ...

  3. 【读书笔记】iOS-防止通讯协议被轻易破解的方法

    开发者可以选择类似Protobuf之类的二进制通讯协议或者自己实现通讯协议,对于传输的内容进行一定程度的加密,以增加黑客破解协议的难度. 参考资料: <iOS开发进阶> --唐巧

  4. CNN 美国有线电视新闻网 wapCNN WAP 指无线应用通讯协议 ---- 美国有线电视新闻网 的无线应用

    wapCNN  wap指无线应用通讯协议  CNN美国有线电视新闻网   固, wapCNN 美国有线电视新闻网的无线应用 -------------------------------------- ...

  5. Netty 对通讯协议结构设计的启发和总结

    Netty 通讯协议结构设计的总结 key words: 通信,协议,结构设计,netty,解码器,LengthFieldBasedFrameDecoder 原创 包含与机器/设备的通讯协议结构的设计 ...

  6. 几种通讯协议的比较RMI > Httpinvoker >= Hessian >> Burlap >> web service

    一.综述本文比较了RMI,Hessian,Burlap,Httpinvoker,web service等5种通讯协议的在不同的数据结构和不同数据量时的传输性能.RMI是java语言本身提供的远程通讯协 ...

  7. 射频识别技术漫谈(6)——通讯协议概述【worldsing笔记】

    通讯协议是通讯的双方或多方在交流时遵守的规矩,包括谁先发起通讯,先交流什么,后交流什么,一方如何问,另一方如何答等.在这里通迅的双方指的是读写器和卡片. 首先是谁先发起通讯,很显然有两种,读写器先发言 ...

  8. USB通讯协议 && 数据传输

    USB2.0通讯协议(spalish)   1.包(packet) 包是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的.USB包由五部分组成,同步字段(sync).包标识符(PI ...

  9. ISO7816通讯协议在工控主板EM9160中的实现方案

    在新的国家电网智能终端相关标准中,规定了通过专门的加密芯片来保证设备数据安全性的方法,而设备主控单元与加密芯片采用了广泛应用的ISO7816通讯协议.工控主板EM9160为了适应这一新的技术需求,对其 ...

随机推荐

  1. *C语言有关指针的变量声明中的几个易错点

    转至:http://my.oschina.net/ypimgt/blog/108265   Technorati 标签:  指针, typedef, const, define 我们都知道,至少听说过 ...

  2. 树莓派小车By 树莓派爱好者ITJoker(通过python socket通信实现树莓派视频小车)(一)

    本文由树莓派爱好者ITJoker 编辑,转载请注明出处.本人也有新浪博客同样是树莓派爱好者ITJoker 所需材料:树莓派2B或者2B以上,L2985n驱动板,若干排线,电池及电池盒,usb无线网卡( ...

  3. c# 对象 & 类

    类定义中可以使用的访问修饰符组合 none or internal 类只能在当前工程中访问 public 类可以在任何地方访问 abstract or internal abstract 类只能在当前 ...

  4. 精通libGDX游戏开发-RPG实战-欢迎来到RPG的世界

    欢迎来到RPG的世界 本章我会快速的使用tiled这样的瓷砖地图工具,来带领大家创造所设想的世界. 创建并编辑瓷砖地图 瓷砖地图(tile-based map)是广泛应用于各种游戏类型的地图格式,li ...

  5. BZOJ 3640: JC的小苹果 [概率DP 高斯消元 矩阵求逆]

    3640: JC的小苹果 题意:求1到n点权和\(\le k\)的概率 sengxian orz的题解好详细啊 容易想到\(f[i][j]\)表示走到i点权为j的概率 按点权分层,可以DP 但是对于\ ...

  6. BZOJ 1299: [LLH邀请赛]巧克力棒 [组合游戏]

    每次一人可以从盒子里取出若干条巧克力棒,或是将一根取出的巧克力棒吃掉正整数长度. Nim游戏多了一个决策:拿出一些石堆 显然只要给对方构造异或和为0的子集就行了 暴枚子集... #include &l ...

  7. C#写鞍点问题

    题目: 编写程序,找一找一个二维数组中的鞍点(即该位置上的元素值在行中最大,在列上最小.有可能数组没有鞍点). 要求 * 二维数组的大小.数组元素的值在运行时输入: * 程序有友好的提示信息 usin ...

  8. Windows Server 2012开启多人远程

    首先在Server Roles中选择Remote Desktop Services,然后在Role Services中安装Remote Desktop Session Host 安装完成后需要重启机器 ...

  9. docker dead but pid file exists

    CentOS 6安装docker 报docker dead but pid file exists 执行 yum install epel-release yum install docker-io ...

  10. 当inline元素包裹block元素时会发生什么

    经常有图片链接写法如下: <a href="www.baidu.com"><img src="baidu.jpg" /></a&g ...