极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 23258|回复: 7

Arduino 与 Windows 应用程序之间的数据传输

[复制链接]
发表于 2011-12-2 01:01:18 | 显示全部楼层 |阅读模式


可以用串口进行通讯...(废话,谁不知道)

比方俺有一对经纬度数据:103.79835 24.35858 需要从Arduino 发到 Windows 程序,肿么办?

简单,把这一个字符串通过Arduino的串口发到PC的串口不久结了?顶多中间加个分隔符嘛,像这样:103.79835/24.35858 或者 [email protected] 等等等等

这个方法简单,但是捏,不大好。第一,这么发过去,两个数据至少就要18个字节了(一个字符一字节),如果Arduino和Windows程序之间通过GPRS之类按照流量计费的通讯方式连接的话,这可就是白花花的money那。其二,发送端要编码,接收端要解析字符串,费力,累。其三,数据保密性差

有木有更好的办法?有,这么着

Arduino 端:

        byte szArduino[4];
        long gLon, *pDat;

        gLon = 10379835;        // 103.79835 为什麽变成了 10379835 呢?先乘100000再除100000不就完了
        pDat = &g_dLon;

        memset(szArduino, 0, 4);
        memcpy(szArduino, pDat, 4);



Windows 程序端:

        BYTE szWin[4];
        int  nData, *pDat;

        memset(szWin, 0x00, 4);
        pDat = &nData;

        // 伪代码:
        // 把 arduino 端 szArduino[4] 的内容依次赋给 szWin[4]
        // 这两个数组实质上都是一段4字节的内存空间
       
        memcpy(pDat, szWin, 8);
        ASSERT(nData == 10379835);                // 确认Window端接受的数据就是Arduino端发送的数据


一个很重要的地方,Arduino端变量类型是long,而Windows端是int,为什么?
因为arduino系统当中long类型变量占用空间为4 byte,在Windows里面,int类型变量也是4 byte,回答完毕

那么 arduino端和Windows端都采用double 类型变量行不行?俺不知道...因为这个要研究一下double类型数据在arduino及Windows当中是如何表示的...表忘了,arduino当中的double只有4 byte,而Windows 的 double 有 8 byte.



事实上,matlab 通过UDP与应用程序进行通讯就是这么整滴...




评分

参与人数 1 +30 收起 理由
Ansifa + 30 恩恩,传整体数字的确比传ASCII码要节省

查看全部评分

回复

使用道具 举报

发表于 2011-12-2 01:31:38 | 显示全部楼层
恩恩,传整体数字的确比传ASCII码要节省
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-5 14:38:49 | 显示全部楼层
其实以这种方式传递数据的主要目的还在于:如果 Arduino 与pc之间的数据传递不仅仅限于简单的 ASCII码数据,甚至还包括二进制数据,例如图像或是音频,那么采用上述方式传输数据就能够既满足字符类数据传输的需要,又满足二进制数据的需要,从而将数据传输方式统一起来。
回复 支持 反对

使用道具 举报

发表于 2011-12-7 22:55:07 | 显示全部楼层
看不懂···哎···上位机实现吗
回复 支持 反对

使用道具 举报

发表于 2011-12-18 16:31:53 | 显示全部楼层
还有一个思路:经纬坐标是连续的,所以按照一定周期内的收发频率只传分秒数据即可。
回复 支持 反对

使用道具 举报

发表于 2012-9-19 23:21:06 | 显示全部楼层
一个学习下
回复 支持 反对

使用道具 举报

发表于 2012-9-25 11:07:03 | 显示全部楼层
这个高深了 是不是要上位机解码
回复 支持 反对

使用道具 举报

发表于 2012-9-25 15:25:12 | 显示全部楼层
感觉好深奥啊~~~
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-30 04:29 , Processed in 0.070187 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表