目录
1、客户端修改和通信帧确定
2、 修改服务器程序
3、 添加driver_handle程序
4、 测试
1、客户端修改和通信帧确定
上次写dht11的时候顺手把ds18b20的GUI一起改了所以这次直接去改client
#ds18b20
elif cmd[2] == '0' and cmd[3] == '6':
if cmd[4] == 'g':
try:
global_var.TEM=cmd[5]+cmd[6]
message = f"{global_var.TEM}°C"
window['DS18B20_O'].update(message)
except:
message = "ERROR"
window['DS18B20_O'].update(message)
print("DS18B20: message ERROR")
else:
message = "ERROR"
window['DS18B20_O'].update(message)
print("DS18B20: message ERROR")
2、 修改服务器程序
case 6:
printf("ds18b20!!!\n");
if ('g' == cmd[4])
{
ret = ds18b20_handle(buf);
tx_buffer = buf;
}
printf(">>>>>>%s\n",tx_buffer);
if (send(acceptfd, tx_buffer, strlen(tx_buffer), 0) < 0)
{
perror("send failed");
}
好像程序越来越好写了呢,其实这才是正确的现象。
这说明框架越来越完善了,不过我的框架有一堆问题还没改现在只能将就着用。
3、 添加driver_handle程序
/*
*author : xintianyu
*function : Handle dht11 Settings
*date : 2024-4-22
-----------------------
author date modify
*/
int ds18b20_handle(char *data)
{
/*传入参数后面要做通用处理使用空指针*/
char *device = "/dev/cebss_ds18b20";
int buf[2];
int ret = NOERROR;
static int fd;
/* 打开文件 */
fd = open(device, O_RDWR);
if (fd == -1)
{
printf("can not open file %s\n", device);
return ERROR;
}
if (read(fd, buf, 8) == 8)
{
printf("get ds18b20: %d.%d\n", buf[0], buf[1]);
sprintf(data,"@006g%d%d", buf[0], buf[1]);
}
else
{
printf("get ds18b20: -1\n");
sprintf(data,"@006e");
}
return ret;
}
4、 测试
有了这个框架十分钟就能新增一个模块。大大提高了开放效率。