拼凑上位机,send函数疑问
时间:10-02
整理:3721RD
点击:
前段时间的折腾,基本上可以进行简单的wifi通信
周末有点时间,用labview做个简单的上位机
完成一个简单的采集任务,麻雀小五脏全
没有什么美化的插件,做得很粗糙
从OPEN1081采集温度数据
在上位机设置最高、最低的报警阈值
ALARM灯根据阈值来进行点亮或者熄灭,达到报警功能
上框图,大神轻拍
每50ms,上位机向OPEN1081发送一次数据
OPEN1081收到数据后,回复固定长度的数据
以Temp开头,紧跟温度数据
温度数据转换成浮点数后,送插件输出
同时与温度阈值比较,点亮或者熄灭ALARM灯
上视频简单演示一下:
上点代码,很随意,以后再用systick去采集数据吧
if (clientfd【i】 != -1) {
if (!FD_ISSET(clientfd【i】, &readfds)) {
con = recv(clientfd【i】, buf, 3*1024, 0);
if (con > 0) {
tmp = get_tem();
itostr(SEND_buff,tmp/100);
strcat(SEND_buff,".");
itostr(TMP_buff,tmp%100/10);
strcat(SEND_buff,TMP_buff);
SEND_str_len = strlen(SEND_buff);
send(clientfd【i】, "Temp", sizeof("Temp")-1, 0);
send(clientfd【i】, SEND_buff, SEND_str_len, 0);
}
else {
close(clientfd【i】);
clientfd【i】 = -1;
}
}
注意到红色字体么?
很奇怪的一个问题,
如果使用send(clientfd【i】, "Temp", sizeof("Temp"), 0);的话,上位机无法获取温度数据了
在labview中debug发现,用send函数发送Temp字符,上位机居然收到Temp外加一个空格
所以无法正常接收温度数据
把sizeof("Temp")减掉1后,一切正常,百思不得其解啊
昨天庆科的工程师回复函数库可参考参考POSIX标准
下去再好好研究一下吧
楼主干得不错!
我刚开始关心recv,read, recvfrom及send,write, sendto这几个库函数。
这用身体温度怪吓人的,才10度
不错。顶一个。