当前位置:  技术问答>linux和unix

Linux系统上用QT编写ARM9控制继电器程序的问题

    来源: 互联网  发布时间:2017-04-06

    本文导语:  我刚刚接触QT,目前还是在windows上学习QT 。  想写个QT界面程序到arm板子上,就是通过界面的按钮来控制继电器的开关。但是不知道怎么去实现  求高手指点 | 你驱动写好了吗,先弄驱动,...

我刚刚接触QT,目前还是在windows上学习QT 。  想写个QT界面程序到arm板子上,就是通过界面的按钮来控制继电器的开关。但是不知道怎么去实现  求高手指点

|
你驱动写好了吗,先弄驱动,把驱动加载好后,然后就写QT程序,就好了,最简单的就是一个界面上 两个按钮,开启与关闭。感觉很简单,是吧!!!!

|


你到底是卡在哪块了呢?是驱动还是应用层?

先解决驱动的问题:
继电器,用I/O就可以控制了是吧,给高就通,给低就断,或者反着。
驱动程序内部建立一个状态记录量。用字符设备驱动就可以做了,有open,close,ioctl  3个就OK了。ioctl里面,一个读取状态命令(返回状态的方式有两种,通过返回值返回但是不规范,另一种就是通过传参指针返回),一个设置状态命令(也可以拆成2个,一个设置成开一个设置成关,这样就不用解析第二个变量了)。写个驱动程序,默认加载后通。然后改一下,加载后默认关。先验证你的驱动能正常控制硬件设备。读的问题不管,流程是一样的,设置好了,读也就差不多了。但需要应用程序配合,所以这个读状态到后面做。


然后写应用程序,打开设备文件,调用应用程序的ioctl发送通或者是开,两个按钮,或者是一个按钮带切换状态的。这样就差不多了,带个读状态功能也不难,只要ioctl设置是好的,这个读取状态也是和设置状态一样的流程,一样简单的改改就好了。QT上加个按钮,这很简单吧,这可是最简单的。

整个功能还是很简单的。不管是驱动还是应用程序,都是只要找到了简单的例子程序,很简单的改改就OK了。自己先试试,再有问题再说。


|


你没有把你手上开发板自带的资料都通读一遍吗。

那个是有教程的,你编译生成的Linux可执行文件有一下几种方法放到开发板上:

1.把U盘或SD卡插接到PC上,把程序存到U盘或SD里面,然后插接到开发板上,拷贝出程序就可以了。
2.通过网络的方法,例如tftp(很常用)或ftp,也有其他的网络方法,这里就不说了,初学者应该学会最常用的。
3.其他方法就不再介绍了。

建议初学者自己要多多阅读资料,不要一心急着问问题,答案一般都在手边,勿需舍近求远。
查阅拟定资料也是一项很重要的能力,这个就是在锻炼这个能力。

|


makefile文件是怎么弄的?是自己写的,还是原模原样的搬过来的,还是经过自己修改的?还是?

make之后,编译显示的信息有没有报错?
有错的话,需要查看导致错误的原因。是代码写得有问题,还是makefile不对。

没有报错的话,那么要么生成的*.ko不在当前目录下而在其他的路径下,自己查看makefile文件

要么makefile写得有问题,编译通过了但就是没有生成*.ko文件。

|


你是直接在内核模块中加的驱动编译呀

这个我不是很熟悉,但建议你不要怎么干。

你对这个的选项是Y还是M,这是由区别的。我要没记错的话,如果选的是Y的话,可能这个驱动已经被打包起来了,当然也就看不到了。选M,是以模块化的方式生成的,那就会有*.ko的文件。

但是,你这是在编一个大内核里面的,修改、调试都很麻烦不觉得吗!!!

开发驱动好的作法是,以模块化的方式编译,最好是单独编译。调试时手工加载驱动。不要编译到内核,不要随机加载,那是等你把驱动都做得没有问题了,确认基本没有风险了才这样做的。

给你一个Makefile的范例,自己对着改改吧。

obj-m := beep.o     //改成你要的驱动文件的名字,注意不要用ko,它自己会给你生成ko的
PWD =$(shell pwd)
KERNELSRC =/homeS3C2440_ker/kernel    //内核路径

all:
rm -rf *.ko* *.o *.mod.c Module.symvers
make -C $(KERNELSRC)  M=$(PWD)  modules
clean:
rm -rf *.ko* *.o *.mod.c Module.symvers

|


你用的我给的makefile改后编译出来gpio没定义的错误是吗?
你给的内核路劲应该有问题了

|
继电器接ARM板的GPIO,然后写个程序控制GPIO的高低电平就可以了。

    
 
 

您可能感兴趣的文章:

  • 为什么在其它机器上用telnet登陆不了我的linux?
  • 各位老大,都晒晒您在linux上用的是什么影音播放器?支持图形界面吗?
  • 怎么在linux上用zlib库写一个简单的文件压缩程序?
  • 请推荐一个配置要求低linux安装,我打算装上用来学习在linux上面做开发
  • 小弟试了几天,failed!--基本上用源代码安装linux?
  • 在Linux上用C语言编写的函数里面申请了一块内存,并且返回这块内存,最终它需要释放吗?
  • 请问大家在LINUX上用什么来开发! KDeveloper?
  • 在linux上用tar压缩一个文件后到windows上解压缩出现乱码
  • linux上用gcc编译c程序老出错
  • 怎么在linux上用c程序调用mysql数据库,可以给一段例子么?
  • 在Linux上用什么语言进行WEB设计最好阿,我本来想用c,c++来做可是查了查网络上到处都是用Perl,PHP的
  • 求linux上用c语言控制步进电机程序思路
  • linux安装上webmin后不能通浏览器用http://IP地址:10000访问,而在本机上用http://localhost:10000却可以访问,为什么?
  • unix/linux上用多线程还是多进程开发程序好?
  • 新手请教高手在linux上用c写结构体时是不是有大小限制?如何解决?
  • 在Linux上用C语言作了一个程序,程序中申请(malloc)了很大的内存,但是没free,当程序运行结束后,内存是否自动释放?
  • win XP 上用VM 装linux,串口通信问题。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在没有linux的盘,只有DOS启动盘)
  • Linux Kernel 'sctp_v6_xmit()'函数信息泄露漏洞
  • 如何让win2000和linux共存。我装好WIN2000,再装LINUX7.0,但LILO只能找到LINUX,不能引导WIN2000
  • linux c下利用srand和rand函数生成随机字符串
  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • Linux c++虚函数(virtual function)简单用法示例代码
  • 我们网站的服务器从windows2000迁往linux,ASP程序继续使用,可是我连LINUX的皮毛都不了解,大家告诉我LINUX下怎么建网站??
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • 中文Linux与西文Linus分别哪一个版是权威?I认为是:中科软的白旗Linux与西文的绿帽子Linux!大家的看法呢?
  • Linux下chmod命令详细介绍及用法举例
  • 我重装了winme,却进不了Linux了,而我现在又没有Linux光盘,也没有Linux启动盘,还有没有办法?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,