依睛(IT blog) 我回来了,PHP<-->C/C++ LINUX

笨鸟

统计

积分与排名

友情连接

最新评论

命令码与命令附加码(1)

命令码与命令附加码

 

命令码

命令附加码

 

 

发送方

01h

N/A

联机查询

 

上位机

01h

传感器状态查询

 

01h

00h

联机查询响应

00h 表示成功

在线采集器

ChSum

Ch 1 Stat 1

…Ch i Stat i

…Ch n

上传传感器状态

Stat :为线采集器的通道传感器状态, 00 表示正常, 01 表示未接信号, 02 表示异常

实例:

上位机 à FF FF 03 00 00 00 01 01 05  

                           FF FF                 起始

                            03 00 00 00  :   字节数

01  :          版本号 

01  :        命令码 是否连接

05  :        验证码

查询在线采集器是否在线

在线采集器 à FF FF 04 00 00 00 01 01 00 06

                           FF FF                 起始

                            04 00 00 00  :   字节数

01  :          版本号 

01    :        命令码 是否连接

00  :          正常    
      06  :               验证码






code: emo.c:
让我困惑一个星期,  哎.........,  终于做出来.


#include <windows.h>
#include <iostream>
#pragma comment(lib, "ws2_32")

using namespace std;
#define LEN  1024
int main()
{
 int          i=0;
    char         buf[LEN] = {0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07};
    int             len;
 WORD wdVersionRequired;
 WSADATA wsaData;
   
 wdVersionRequired = MAKEWORD(2, 2);  /* 2.2版本 */
 WSAStartup(wdVersionRequired, &wsaData);

 SOCKET s = socket(AF_INET, SOCK_STREAM, 0);
 if (SOCKET_ERROR == s)
 {
  return 0;
 }

 sockaddr_in    saServer;
 memset(&saServer, 0, sizeof(saServer));
 saServer.sin_family = AF_INET;
 saServer.sin_addr.s_addr = inet_addr("192.168.1.14");
 saServer.sin_port = htons(8001);

 if(connect(s, (const sockaddr*)&saServer, sizeof(sockaddr)) != 0)
 {
  perror("error");
  exit(-1);
 }

    do {
        /* 9 bytes */
     if(send(s, buf, 9, 0) <= 0)  //send server
     {
      perror("error");
      break;
     }
        printf("发送成功.\n");

        /* 如果 server 关闭, 就退出 */
     if ((len=recv(s, buf, sizeof(buf), 0)) <= 0)
        {
      perror("error");
            break;
        }

        printf("接收到 %d bytes.\n", len);
        /* 逐字节输出, 注意这里必须转换成 "无符号"字符型 */
        for (i=0; i<len; i++) {
            printf("%02X ", *(unsigned char *)(buf+i));
        }
        printf("\n", len);
    } while (0);

 WSACleanup();
 closesocket(s);

 return 1;
}



posted on 2008-01-29 09:02 向左向右走 阅读(222) 评论(0)  编辑 收藏 引用 所属分类: C/C++学习资料库

只有注册用户登录后才能发表评论。