3.3 Socket编程技术
在本应用程序中,控制器一般被设置为服务器端,其具体的过程如下:
◇创建套接字:int socket(int domain,inttype,int protocol。
◇绑定socket到特定端口:int bind (intsockfd,struct sockaddr*my_addr,int addrlen)。
◇监听套接字端口:int listen(int sockfd,int backlog)。
◇接受客户端连接请求:int accept (intsockfd,void*addr,int*addrlen);
◇发送数据(面向TCP连接):int send (intsockfd,const void*msg,int len,int flags)。
◇接收数据(面向TCP连接):int rear(intsockfd,void*buf,int len,unsigned int flags)。
◇关闭套接口:close(socket)。
3.4 进程间的通信技术
进程间的通信手段主要有管道、消息队列、信号、共享内存、信号量、套接口等等,本文采用的是内存共享和信号机制。
(1)内存共享
在该方式中,多个进程可以访问同一块内存空间,它是最快的可用IPC形式,往往使用信号量机制来达到进程同步一互斥。mmap()系统调用使得进程之间可以通过映射同一个普通文件来实现内存共享。当普通文件被映射到进程地址空间后,进程可以向访问普通内存一样来对文件进行访问,而不必再调用read()和write()等操作。
(2)信号机制
该方式可用于通知接受进程有某种事件发生,是进程间唯一的异步通信机制。该方式的信号安装代码为:
int sigaction(int signum,const struct sigaction*act,struct sigaction*oldact)。
而发送信号的代码为:
int sigqueue(pid_t pid,int sig,const unionsigval val)。
4 运行步骤
将编译好的可执行文件移植到目标板上,需要以下几个步骤:
(1)打开电脑的超级终端程序,将计算机串口与目标板相连;
(2)在ARM板加电初始化完毕后,cd到开发板的tmp文件夹底下,再用超级终端上的上载文件功能,将可执行程序下载到板子上。
(3)在命令行敲人chmod 777 xxx,改变可执行文件的执行权限。
(4)在命令行敲人./xxx,并执行。此后程序开始运行。
5 结束语
本文以可变情报板图形系统的开发为例,阐述了基于QT的应用软件开发方法,其友好的人机交互界面以及反应快速灵敏的特点,使得该系统具有良好的执行效果。目前,该系统已经成功交付使用并具有良好的稳定性。随着嵌入式技术的继续飞速发展和用户需求的不断增加,相信在未来不久,LED可变情报板系统将会发挥越来越多的作用。