问题描述
各位高手们,我以前学过一点c#,这次毕业设计,我需要用电脑控制电机的转动,请问哈,c#在控制硬件方面怎么样,如果能够控制的话,又该怎样具体实现呢?求助啊,各位大哥.........
解决方案
解决方案二:
串口和单片机通讯,用单片机控制步进电机~最简单的51系列就可以~
解决方案三:
http://topic.csdn.net/u/20120111/18/2dacb0ab-1c29-4ab7-9ef9-f53d5b0a8cd6.html?30226
解决方案四:
问你用的设备的厂商。问我们没有用的。让他提供对应的sdk。不然谁也给不了你答案。
解决方案五:
可以间接控制。
解决方案六:
我的意思就是用c#编写上位机程序,然后控制电机的转动,这样的话,c#和c++相比那个更方便呢?我以前学过c#所以我还是想看看能不能用c#解决这个问题。毕竟要我再学一门语言有点难度。。。。
解决方案七:
引用3楼zanfeng的回复:
问你用的设备的厂商。问我们没有用的。让他提供对应的sdk。不然谁也给不了你答案。
厂商那里如果没有这种sdk怎么办呢?就没办法用c#开发了吗?
解决方案八:
C#给串口发指令,单片机接收串口的指令输出PWM信号,PWM信号作用于L298N电机驱动模块,控制电机的转向和转速。
解决方案九:
电机用变频器控制,c#和变频器通信
解决方案十:
引用6楼tang233418的回复:
厂商那里如果没有这种sdk怎么办呢?就没办法用c#开发了吗?
看7楼。根本用不着什么厂商的SDK。RS232通信协议是公开的、统一的标准,又不是哪个厂商的专属协议。
解决方案十一:
一般是通过电脑串口或者USB口发送指令到单片机,然后单片机控制电机运动,学习的直接上51就成了。不过好像看见过用串口发送脉冲给步进电机驱动,然后驱动板带动电机的
解决方案十二:
引用10楼dongfangmi的回复:
不过好像看见过用串口发送脉冲给步进电机驱动,然后驱动板带动电机的
你说的这个方案,带动电机的那块驱动板,应该是一个带嵌入式操作系统的设备,否则,就没有“驱动”这一说。我认为,除非你还涉及到其他的复杂逻辑,否则,根本用不着这样的设备。有点大材小用了。
解决方案十三:
拿到电机的通讯协议,根据协议写好控制代码,根据电脑和电机的通讯方式写好通讯代码,如果电机和电脑是网络连接就用System.Net.Sockets,如果是通过串口就用System.IO.Ports命名空间
解决方案十四:
引用9楼xinyaping的回复:
引用6楼tang233418的回复:厂商那里如果没有这种sdk怎么办呢?就没办法用c#开发了吗?看7楼。根本用不着什么厂商的SDK。RS232通信协议是公开的、统一的标准,又不是哪个厂商的专属协议。
RS-232是串行连接标准。你能用它控制人家的设备?!!胡说八道
解决方案十五:
可以控制设备,一般都是通过协议进行进行操作,这个要和具体的设备有关,不同的设备方式不一样,比如电力一般是IEC104,工业控制MODBUS用的较多。
解决方案:
引用13楼zincy的回复:
RS-232是串行连接标准。你能用它控制人家的设备?!!胡说八道
为什么不可以控制他的设备?串口只是一个用于通信的接口。上位机所要做的事情,仅仅是向串口发送一个指令。而下位机所要做的事情,仅仅是接收这个指令。这个指令是什么呢?随你定,你可以定义“A”指令是正转、“B”指令是反转,只要在上位机和下位机的程序里做同样的约定就可以。不管用串口还是用红外,或者用ZigBee、用WIFI、用蓝牙……随便你用什么都行,反正上位机只要能把命令发出去就行,别的事情就不管了,具体怎么识别命令、怎么执行,那是下位机的事,跟上位机毫无关系。大侠,我说得对吗?
解决方案:
完全可以,通过串口方式通信即可。
解决方案:
引用15楼xinyaping的回复:
引用13楼zincy的回复:RS-232是串行连接标准。你能用它控制人家的设备?!!胡说八道为什么不可以控制他的设备?串口只是一个用于通信的接口。上位机所要做的事情,仅仅是向串口发送一个指令。而下位机所要做的事情,仅仅是接收这个指令。这个指令是什么呢?随你定,你可以定义“A”指令是正转、“B”指令是反转,只要在上位机和下位机的程序里做同样的约定就可以。……
你上位机和下位机通讯的协议和232没有必然的关联吧,那也还是需要知道硬件的指令格式,不然你怎么知道发哪串1010过去控制硬件?
解决方案:
学习的直接上51就成了,完全可以,通过串口方式通信即可。
解决方案:
引用9楼xinyaping的回复:
引用6楼tang233418的回复:厂商那里如果没有这种sdk怎么办呢?就没办法用c#开发了吗?看7楼。根本用不着什么厂商的SDK。RS232通信协议是公开的、统一的标准,又不是哪个厂商的专属协议。
晕。这位没搞清楚SDK是啥定义。
解决方案:
不管用串口还是用红外,或者用ZigBee、用WIFI、用蓝牙……随便你用什么都行,反正上位机只要能把命令发出去就行,别的事情就不管了,具体怎么识别命令、怎么执行,那是下位机的事,跟上位机毫无关系。你这里的命令。也就是sdk中通讯协议的一部分。
解决方案:
引用17楼netteans的回复:
你上位机和下位机通讯的协议和232没有必然的关联吧,那也还是需要知道硬件的指令格式,不然你怎么知道发哪串1010过去控制硬件?
原谅我可能用词不当。我所指的RS232的协议,我是这样理解的:对于RS232这种接口,它的电路连接是怎样的,给每个Pin上的电压/电流的限制是怎样的,哪个电压值代表高电平、哪个电压值代表低电平、向它发送一条指令的操作序列是什么…………这些,都应该是业界标准,在我眼里这个就是协议。
解决方案:
引用19楼zanfeng的回复:
引用9楼xinyaping的回复:引用6楼tang233418的回复:厂商那里如果没有这种sdk怎么办呢?就没办法用c#开发了吗?看7楼。根本用不着什么厂商的SDK。RS232通信协议是公开的、统一的标准,又不是哪个厂商的专属协议。晕。这位没搞清楚SDK是啥定义。
抱歉,我确实用词不当。
解决方案:
引用20楼zanfeng的回复:
不管用串口还是用红外,或者用ZigBee、用WIFI、用蓝牙……随便你用什么都行,反正上位机只要能把命令发出去就行,别的事情就不管了,具体怎么识别命令、怎么执行,那是下位机的事,跟上位机毫无关系。你这里的命令。也就是sdk中通讯协议的一部分。
zigbee又有收获
解决方案:
上层用c#底层用c或汇编
解决方案:
引用20楼zanfeng的回复:
不管用串口还是用红外,或者用ZigBee、用WIFI、用蓝牙……随便你用什么都行,反正上位机只要能把命令发出去就行,别的事情就不管了,具体怎么识别命令、怎么执行,那是下位机的事,跟上位机毫无关系。你这里的命令。也就是sdk中通讯协议的一部分。
抱歉,我确实用词不当。硬件方面的编程我只是业余时间玩一玩,没做过什么专业的事情。抛开我不准确的用词,我的意思实际上是这样的:我的意思是说我不需要一个特定厂商的什么SDK,但是我以前也自己业余时间抱着玩的心态做过简单的单片机作品,也用到了串口通信,我用的是一个开源的程序库。(如果这个程序库是哪个特定的厂商提供的,那么这个就是你们所说的SDK吗?)通过这个开源的程序库,我得以向串口发送一些字节,以及接收到我所发送的内容。我自定义了几个命令,当单片机接收到这样的命令的时候,通过我自己写的encode/decode函数,解析出commandheader和commandbody,commandheader里面包含了要执行的功能,commandbody里面包含了执行这个功能所需要的参数。然后调用我自己写的函数来给电机驱动模块发送PWM信号,电机驱动模块我用了一个L298N,电机我用的是电动玩具车里面的直流减速电机。本人硬件方面的知识很贫乏,各位见笑了。但是楼主这样的应用我也做过的,我当时实现的功能比楼主的这个需求还要复杂一些。
解决方案:
引用23楼startstartsvip的回复:
zigbee又有收获
ZigBee,工控领域中的一种低功耗组网技术。它可以两个节点通讯,或者多个节点组成一个网络然后在这个网络内多点通讯。见:http://baike.baidu.com/view/117166.htm
解决方案:
c#可以用api调用KneralIoControl,进而控制驱动,引脚,控制电路。
解决方案:
引用24楼hailang466的回复:
上层用c#底层用c或汇编
不是什么“上层”、“底层”这样的结构,而是上位机与下位机这样的结构。上位机与下位机之间,除了通讯以外,再无任何联系。上位机可以是PC(或者智能手机,或者另一个移动设备)。下位机是一个带电机驱动电路的单片机系统。上位机与下位机的软、硬件平台不同,所以用的开发语言/开发工具也不同。比如说上位机用PC或者WindowsMobile/WindowsCE/WindowsPhone的智能手机,那么这样的平台你当然可以用.Net来编程。而下位机,你可以用什么样的语言/工具来开发,也是由下位机的环境决定的。下位机的Bootloader起了一个最基本的单片机操作的软环境,这个软环境主要有裸系统或者嵌入式操作系统这两种情况。(“裸系统”这个词我或许又用词不准确了,我的意思是没有OS直接靠状态机来给单片机的PIN发送高低电平的这种情况)对于“裸系统”,你需要用C/汇编生成二进制的bin文件然后烧到Flash里面。对于嵌入式OS的环境来说,这个OS支持什么样的运行环境,你就可以用什么来编程,比如说,如果你的嵌入式OS是一个embeddedLinux,然后你在这个Linux系统上运行了一个BusyBox的小环境,又添加了Python的运行库,那么你也可以用Python来给下位机编程。当然理论上说是可以这样做的,你觉得方便不方便那就另说了。