1621|2

6841

帖子

11

TA的资源

版主

楼主
 

【平头哥RVB2601开发板试用体验】TCP_SEVER 通信 [复制链接]

  本帖最后由 lugl4313820 于 2022-4-4 00:25 编辑

我的智能冷库管理系统,首先要搭建:服务器、wifi、传感器。目前项目的设计是用RVB采集到温度、冷库供电电压,工作电流,然后通过网络发送到我服务器。

1、首先建立TCP服务器:我采用的中tornado来建立自己的服务器。

class DeviceServer(TCPServer):
    def __init__(self, account, servernum):
        super(DeviceServer, self).__init__()
        self.account = account
        self.servernum = servernum

    # 接收客户端连接请求
    @gen.coroutine
    def handle_stream(self, stream, address):
        conn = Connection(self.account, self.servernum, stream, address)
        yield conn.send_messages()
        
class Connection(object):
    clients = set() # 客户端对象

    def __init__(self, account, servernum, stream, address):
        Connection.clients.add(self)
        self.account = account
        self.servernum = servernum
        self._read_future = None
        self._stream = stream  # TCP对象
        self._address = address  # TCP地址
        self.heart_count = 0  # 设备发送心跳包次数
        self.previous_order = 'rvb2601\r\n'  # 上一条指令默认为回复心跳包
        self.machine_code = ''  # 机器编号
        self.tcp_is_activate = True  # tcp通道是否保持连接
        self._stream.set_close_callback(self.on_close)  # tcp通道关闭后相关变量处理函数
        print('第{}个客户端,地址:{}'.format(len(self.__class__.clients),self._address))
def main():
    # 程序入口
    port = 3333
    ip = '0.0.0.0'
    kill_port_process(port)

    asyncio.set_event_loop(asyncio.new_event_loop())
    server = DeviceServer('lugl', 'rvb_server')
    print('启动服务器')
    # 启动服务器前先杀死端口

    server.listen(port=port, address=ip)
    IOLoop.instance().start()

if __name__ == '__main__':
    main()

这样搭建好了基础的服务器框架。

2、根据网友的文章在demo上修改代码实现wifi建接服务器:i

f (app_netmgr_hdl) {

        utask_t *task = utask_new("netmgr", 2 * 1024, QUEUE_MSG_COUNT, AOS_DEFAULT_APP_PRI);

        netmgr_service_init(task);

        netmgr_config_wifi(app_netmgr_hdl, "HUAWEI-H10R9U", sizeof("HUAWEI-H10R9U"), "18977381885@", sizeof("18977381885@"));

        w800_packet_input_cb_register(&w800_data_receive_callback);//这里注册接收到数据的回调函数。

    netmgr_start(app_netmgr_hdl);

    }

void w800_data_receive_callback(int linkid, void *data, size_t len, char remote_ip[16], uint16_t remote_ports)

{

    uint8_t *buf;

    buf = (uint8_t *)data;

    if(len == 0)

    {

    return;

    }

    LOGE(TAG,"receive data len: %d\r\n",len);

    LOGE(TAG,"receive data:");

    for(uint16_t i = 0; i < len; i++)

    {

    printf("%c ",buf);

    }    

    LOGE(TAG,"\r\n");

}

注册两个函数,一个用于连接服务器,一个用于测试发送数据:

static void cmd_at_client_handler(char *wbuf, int wbuf_len, int argc, char **argv)

{

    const uint8_t pdata[] = "Hello RVB2601!\r\n";

    int len = sizeof(pdata);

    int timeout=120;

 

    w800_send_data(pdata,  len, timeout);

}

 

static void connect_tcp_server_handler(char *server_ip, uint16_t port)

{

    char ssid[32];

    int bssid[6];

    int channel;

    int rssi;

    server_ip = "192.168.3.192";

    port = 3333;

    

    w800_ap_info( ssid, bssid , &channel,  &rssi);

    printf("ssid: %s\r\n", ssid);

    printf("channel: %d\r\n", channel);

    printf("rssi: %d\r\n", rssi);

    

    w800_connect_remote(0, 2, server_ip, port);

}

实验现象:

 

 

到此,RVB2601与服务器的通信建立,下一步采集数据并上传服务器,服务器建立数据接收保存。

疑问:目前平头哥的AT指令只支持tcp_clien,不知道可不可以用WM_W800_SDK中的AT指令。

最新回复

您提交的工单我们已经收到 工程师已经回复您了 麻烦您看一下 然后给我们一个回复   详情 回复 发表于 2022-4-7 16:52
点赞 关注
 
 

回复
举报

5217

帖子

239

TA的资源

管理员

沙发
 

@未来开发者

帖中疑问帮忙看看

 

目前平头哥的AT指令只支持tcp_clien,不知道可不可以用WM_W800_SDK中的AT指令”

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

您提交的工单我们已经收到 工程师已经回复您了 麻烦您看一下 然后给我们一个回复

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表