上位机软件接口说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

上位机软件接口说明

1.基于数据流的socket编程接口

a.基于数据流的socket编程流程如下图1所示。上位机软件是服务器,月

球车软件是客户机。

图 1 基于数据流的socket编程流程

b.上位机服务器侦听自己IP地址和端口7001,等待客户机Socket连接。

等到客户机connect()操作的上位机等待并读取客户机的“请求数

据”,上位机处理服务请求后,写入“答应数据”给客户机,其流程如

上图所示。

客户机发起请求,上位机答应请求,命令总长度是40个字节,上传图像数据命令长度例外,命令长度不够40字节,数据内容填0.

客户机发给上位机通讯命令格式如下:

起始码(0x55, 1字节)+长度(2字节,包括命令码和数据内容)+命令码

(1字节)+数据内容(长度-1字节)

上位机回应客户机通讯命令格式如下:

取反起始码(0xaa, 1字节)+长度(2字节,包括命令码和数据内容)+取反命令码(1字节)+数据内容(长度-1字节)

客户机发给上位机具体命令码定义:

1. 0x01 客户机请求启动月球车

数据内容:无

2. 0x02 客户机请求上传图像

数据内容:需要传输图像总共有多少字节

3. 0x03 客户机上传图像数据

数据内容:图像数据

4. 0x04 客户机请求上传采集数据

数据内容:采集数据

上位机回应客户机具体命令码定义:

1. 0xFE 上位机回应客户机是否启动月球车请求

数据内容:第1字节为0马上启动,非0表示月球车等待非0秒后再发启动月球车请求。

2. 0xFD 上位机回应客户机上传图像请求

数据内容:第1字节为0马上启动,非0表示月球车等待非0秒后再发上传图像请求。

3. 0xFC 上位机回应客户机上传图像数据是否成功

数据内容:第1字节为1成功,0失败

4. 0xFB 上位机回应客户机上传采集数据请求

数据内容:第1字节为1成功,0失败

举例说明:

1. 客户机请求启动月球车及回应命令示例

客户机发给上位机请求启动月球车命令为

0x55 0x00 0x25 0x01 0x00, ... 0x00 (总共40字节),其中0x00 0x25为命令+数据内容长度,为37个字节,0x01为命令码,数据内容全是0。

上位机回应客户机可以马上启动月球车命令为

0xaa 0x00 0x25 0xFE 0x00, ... 0x00(第1字节数据为0)

2. 客户机请求上传图像及回应命令示例

客户机发给上位机请求上传图像命令为

0x55 0x00 0x25 0x02 0x00, 0x 00, 0xA0, 0x00, 0x00, 0xA0, 0x00, 0x80 (0x00)

(总共40字节),其中0x00 0x25为命令+数据内容长度,数据内容:0x00,

0x00, 0xA0, 0x00为图像大小=0xA000=40960字节,其后2个字节0x00,

0xA0是图像长度,再其后2个字节0x00, 0x80是图像宽度。

上位机回应客户机可以马上传输图像数据命令为

0xaa 0x00 0x25 0xFD 0x00, ... 0x00(第1字节数据为0)

客户机发给上位机请求上传上传图像数据命令为

0x55 0x03 0x00 0x03 0xa2, 0x3f, ... 0xd0 (总共0x300=768字节,数据内容

767字节)。0xa2, 0x3f, ... 0xd0为图像数据

上位机回应客户机传输图像数据是否成功命令为

0xaa 0x00 0x25 0xFC 0x00, ... 0x00(第1字节数据为0,传输成功)

3. 客户机请求上传采集数据及回应命令示例

0x55 0x00 0x25 0x04 0x0d, ... 0x44 (总共40字节),其中0x00 0x25为命令+

数据内容长度,为37个字节,0x0d, ... 0x44为采集数据内容。

上位机回应客户机可以马上启动采集数据命令为

0xaa 0x00 0x25 0xFB 0x00, ... 0x00(第1字节数据为0)

2.上位机图像格式转换

a.CMOS摄像头采集到的是16bits真彩图像,即RGB分别是5、6、

5bits。而计算机上显示的图像一般是24bits真彩图像,即RGB分别是

8、8、8bits。因此上位机收到月球车采集的图像时,需要进行格式转

换。

b.举例说明如下,CMOS摄像头采集后上位机接收了一幅320*256大小的

图片,存于buffer [320*256*2]中,每个像素16bits颜色信息,用2个字

节存放。上位机格式转换代码如下(在Delphi上测试成功,修改为C代

码)。注意VideoFrame.Canvas.Pixels[j, i]是在画布上显示一个像素点操

作。

#define LSIZE 320

#define RSIZE 256

unsigned char buffer[LSIZE*RSIZE*2];

int i, j, R, G, B;

for (i=0 ; i

for (j=0; j

{

R = (buffer[2*(LSIZE*i+j)+1] & 0xF8);

G = (buffer[2*(LSIZE*i+j)+1] & 0x07) << 13 + (buffer[2*(LSIZE*i+j)] & 0xE0) << 5;

B = (buffer[2*(LSIZE*i+j)] & 0x1F) << 19;

VideoFrame.Canvas.Pixels[j, i] = B + G + R;

}

相关文档
最新文档