17127|26

2751

帖子

0

TA的资源

裸片初长成(初级)

楼主
 

ADC10实验例程(含C#上位机) [复制链接]

C#上位机学习资料
https://bbs.eeworld.com.cn/viewthread.php?tid=308129&page=1#pid1198878

上周逛论坛看到上面的C#串口教程,觉得挺有趣的,跟着学了一下,结合LaunchPad写了一个简单的ADC10+串口上位机。
第一次用C#,线程、运行机制呀什么的全不懂,仅仅是依葫芦画瓢而已。
下位机采样ADC通道7,把转换结果通过多次测量求平均值的方式滤波后,发送至上位机。
上位机通过简单的状态机方式对接收的数据进行协议分析,把获取到的转换值通过十六进制、十进制和进度条显示出来。
可通过外接滑动变阻器到P1.7脚测试,ADC可转换电压范围0~VCC。
附件是完整的工程文件,totally open code。
Board: LaunchPad
MCU: MSP430G2231

ADC10.rar (1.01 MB, 下载次数: 2300)

//ADC通道7,采样转换后通过虚拟串口来发送至上位机。
//UART通信参数:2400,n-8-1。
//协议格式:0xaa + 0xa5 + 高位值 + 低位值 + 0x5a。
//LaunchPad开发环境 :CCS v4.2 + Grace
//上位机开发环境:Visual Studio 2010
//上位机开发语言:C#
//ADC转换结果采用多次测量求平均值的方法进行滤波
//运行结果:上位机显示ADC转换的十六进制Hex和十进制Dec值,并且通过进度条显示。程序运行期间,LED1闪烁。

使用CCS新建工程的时候,选择"Hello world" via software UART:

ADC选择通道7,手动方式启动转换:

下位机CCS v4.2编译结果:

上位机Visual Studio 2010编译结果:

程序运行界面:

最新回复

感谢!我弄了半天都没弄好,太需要学习这个了   详情 回复 发表于 2014-11-7 10:09

赞赏

3

查看全部赞赏

 
点赞 关注(5)

回复
举报

1万

帖子

16

TA的资源

版主

沙发
 

这个真不错

 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 

回复

1万

帖子

16

TA的资源

版主

板凳
 

这个真不错

 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

4
 

原帖由 David_Lee 于 2011-10-30 02:18 发表 C#上位机学习资料 https://bbs.eeworld.com.cn/viewthread.php?tid=308129&page=1#pid1198878上周逛论坛看到上面的C#串口教程,觉得挺有趣的,跟着学了一下,结合LaunchPad写了一个简单的ADC10+串口上位机。第一次用 ...

 

附上MSDN我告诉你网址,用于下载Microsoft的东西,很值得收藏。

http://msdn.itellyou.cn/

Visual Studio在开发人员工具栏目里。

 
 
 

回复

2641

帖子

0

TA的资源

五彩晶圆(中级)

5
 
做了我很久前就想做的事情
 
 
 

回复

2641

帖子

0

TA的资源

五彩晶圆(中级)

6
 
做了我很久前就想做而没有时间做的事情
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

7
 

原帖由 David_Lee 于 2011-10-30 02:18 发表 C#上位机学习资料 https://bbs.eeworld.com.cn/viewthread.php?tid=308129&page=1#pid1198878上周逛论坛看到上面的C#串口教程,觉得挺有趣的,跟着学了一下,结合LaunchPad写了一个简单的ADC10+串口上位机。第一次用 ...


David_Lee:


http://msdn.microsoft.com/zh-cn/library/system.io.ports.serialport.datareceived.aspx


不保证对接收到的每个字节引发 DataReceived 事件。 使用 BytesToRead 属性确定缓冲区中剩余的要读取的数据量。


从 SerialPort 对象接收数据时,将在辅助线程上引发 DataReceived 事件。 由于此事件在辅助线程而非主线程上引发,因此尝试修改主线程中的一些元素(如 UI 元素)时会引发线程异常。 如果有必要修改主 Form 或 Control 中的元素,请使用 Invoke 回发更改请求,这将在正确的线程上执行。


这些是怎么理解的?


我不是专业的程序员,这些因素我都考虑到了,但是我还是不敢说我的上位机软件会没有问题。我的下位机软件已经完结(还没发表新版本),不过我现在好像一点热情都没有了,上位机也只是剩下界面菜单问题,都有点懒得弄了


[ 本帖最后由 wangfuchong 于 2011-10-30 23:25 编辑 ]
 
 
 

回复

5015

帖子

12

TA的资源

裸片初长成(初级)

8
 
这个必须顶起来
 
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

9
 

原帖由 wangfuchong 于 2011-10-30 23:15 发表 David_Lee: http://msdn.microsoft.com/zh-cn/library/system.io.ports.serialport.datareceived.aspx不保证对接收到的每个字节引发 DataReceived 事件。 使用 BytesToRead 属性确定缓冲区中剩余的要读取的数据量 ...

 

Got it. Thanks.

 

如前面所言,依葫芦画瓢而已,之前是没有接触过C#的,这是我的第一个C#程序。

 

上班之余花了好几个晚上才弄出来,贴出来共享啦。

 
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

10
 

原帖由 fengzhang2002 于 2011-10-30 22:30 发表 做了我很久前就想做而没有时间做的事情

大地主,把你手中的项目开源一点点,就能让我们获益良多啊。

 
 
 

回复

2002

帖子

24

TA的资源

五彩晶圆(高级)

11
 
很好很强大,要是能做成电压指针表的形式就更炫了
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

12
 
请教楼主能不能说说协议包头或结尾采用1,0乡间的必要性的原理之类的,实际串口通信中对于可靠性应该考虑到那些问题?谢谢
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

13
 
楼主这个好像不能应付高位字节不是只有两位有用如果高位字节所有为都用上该怎么办呢?
 
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

14
 

原帖由 wangfuchong 于 2011-11-12 11:29 发表 请教楼主能不能说说协议包头或结尾采用1,0乡间的必要性的原理之类的,实际串口通信中对于可靠性应该考虑到那些问题?谢谢

 

通信协议是自定义的,符合自己需要就行。

其实这里的协议也可以修改成:帧头+ADC高5位+ADC低5位+校验和+帧尾。

帧头帧尾的唯一性比较容易确定,因为ADC用到的只有5位,还有3位可用于帧头帧尾或者保留位。

 

o(︶︿︶)o ,说来说去,都是自定义的东西,能满足需求就行。给个东西你自己参考一下吧,公共安全行业标准GA/T508-2004《道路交通信号倒计时显示器》里的附录:

 
 
 

回复

173

帖子

0

TA的资源

一粒金砂(初级)

15
 
漂亮啊!
 
 
 

回复

202

帖子

0

TA的资源

一粒金砂(中级)

16
 
这个正在学,这里谢谢了
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

17
 
xxxx .Invoke(new EventHandler(delegate
                {
                    xxxx.Text = "";
                }));
这是假如你在辅助线程引发了接收事件,需要将此数据传给主线程需要添加的委托。当然可能你使用了Control.CheckForIllegalCrossThreadCalls = false;
这将使你不需要委托就可以跨线程调用修改,但是后果需要自己承担。
C#不是底层API。所以需要再添加CRC校验以及不能超高速的发送接收。
 
 
 

回复

34

帖子

0

TA的资源

一粒金砂(初级)

18
 
学习了!
 
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

19
 

原帖由 dixdsq 于 2011-12-22 17:05 发表 xxxx .Invoke(new EventHandler(delegate { xxxx.Text = ""; })); 这是假如你在辅助线程引发了接收事件,需要将此数据传给主线程需要添加的委托。当然可能 ...

受教了,谢谢你。:carnation:

 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(中级)

20
 
很久前就想做而没有时间做的事情
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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