我真是给学院的小学期跪了!!! 一周6天扔在实验室!大四了还让不让人好好考研啊!!!这些玩意儿大二大三去搞就行了啊!!!
吐槽完毕.活还是要干的,砖还是要搬的。比起奇葩的电气传动电子的东西真是友好。
队友并没有黄金右手,抽到的题目好魔性。
铂电阻测温度大概是搞个电桥出来当温度传感器通过测电压来搞吧,然而并不会电桥就扔给擅长模电的机智的队友了。
默默揽下码代码的工作。然而我讨厌单片机编程 凸 凸 说得好像会一样==
上位机要求可设置温度上下界,可采集温度并画出波形。
下位机要求能测温,(AD转换),超过上位机设定的上下界时LED屏显示高了还是低了,能与上位机通讯。
==========================
因为懒成一坨了所以完全没更新所以除了安装可以不用管以下的了
拉倒最下面就好了= =
=================================
2015.9.18上位机通讯摸索中
不想编硬件就先从软件下手=w=
VS没有MFC今天才发现= = 重新搞了一遍。大二学的,已经忘光= = 不过并没有什么关系因为重点是搞出和串口的通讯。
step1: MSCOMM安装
因为MSCOMM控件老师直接给了资料所以就用MSCOMM控件了,其实API应该也可以搞,考完研再看吧。
首先VS2015应该是不带MSCOMM的,所以要自己下一个。
http://download.csdn.net/download/flydream0/4583699
把下载的文件解压,搞到一个mscomm32.ocx
一开始企图把他放在windows/sysWOW64下,然后企图注册失败。又复制了一份到windows/system32下。再搞就行了。
把Regsvr32 mscomm32.ocx搞到记事本里,改成.bat,管理员身份运行。 不然各种跪,不信你试试。
(老师的资料是XP的已经过时了,所以照着做各种跪,不知道有没有学弟学妹能搜到我的博客,趴)
step2:先搞个对话框 T T
一路选选选,基于对话框。然后没啥了 = =
在对话框上右键插入ActiveX控件,选Microsoft Communication Control. Version 6.0。就出现了一个长得很丑的= = 电话向的东西。
不要在意这些细节。
Step3.各种乱搞
右击该图标,在快捷菜单中选择“添加变量”,如m_mscomm1。然后在该控件的属性里添加OnComm函数(右侧属性栏上方有一个闪电图标,就是添加消息响应的地方)。
以上是偷懒复制的= =
找出TOOLBOX(VIEW-TOOLBOX),往里面扔两个文本(Static Text)写Upper和Lower免得我忘记= =扔俩编辑框(Edit Control),改一下ID免得忘记 = =
分别给他们添加变量m_send_upper, m_send_lower
留下确定按钮删掉取消(因为懒)
听说老师希望我们把它做得好看一点然而我并没有什么审美,所以还是保持原状吧= =
PS:如果忘了以上的怎么搞,请看这个拯救了我大二小学期的网站(我就不吐槽学校的教材上有多少错了)http://www.jizhuomi.com/software/257.html
Step4:对话框初始化码码码
感觉我马上就要写出一个无脑教程了,不如更无脑一点,丰富一下老师的教程= =
我的解决方案叫poi,所以编辑poiDlg.cpp里的BOOL CpoiDlg::OnInitDialog() 函数
在里面添加代码,具体作用看注释
m_mscomm1.put_CommPort(5); //设置端口COM5 m_mscomm1.put_InBufferSize(1024); //设置输入缓冲区的大小,Bytes m_mscomm1.put_OutBufferSize(512); //设置输出缓冲区的大小,Bytes if (!m_mscomm1.get_PortOpen()) //打开串口 { m_mscomm1.put_PortOpen(true); } m_mscomm1.put_InputMode(1); //设置输入方式为二进制方式 m_mscomm1.put_Settings(L"9600,n,8,1"); //设置波特率等参数 m_mscomm1.put_RThreshold(1); //为1表示有一个字符即引发事件 m_mscomm1.put_InputLen(0);
Step5:加串口接收代码
找到void CpoiDlg::OnCommMscomm1(),在里面添加
待修改版(因为并不知道下位机怎么往上传的,望天)
里面加了一个新的Edit,变量为m_rev,显示接受的值。。。。因为懒所以懒得截图了。
设置了两个全局变量tot,num计算平均值
void CpoiDlg::OnCommMscomm1() { // TODO: 在此处添加消息处理程序代码 VARIANT variant_inp; COleSafeArray safearray_inp; long i = 0; int len; char rxdata[1000]; switch (m_mscomm1.get_CommEvent()) { case 2: //表示接缓冲区内有字符 variant_inp = m_mscomm1.get_Input();//接收数据 safearray_inp = variant_inp; len = safearray_inp.GetOneDimSize(); m_rev = 0; for (i = 0; i < len; i++) { int tmp; safearray_inp.GetElement(&i, &rxdata[i]); tmp = rxdata[i]; m_rev = m_rev * 10 + tmp; } rxdata[i] = '