LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1057|回复: 6

在做论文过程中遇到了一些问题,贴出来寻求大家的帮助

[复制链接]
发表于 2007-4-17 14:03:15 | 显示全部楼层 |阅读模式
最近忙着写论文,好久没来了,这里还是很热闹啊。

在做论文过程中遇到了一些问题,贴出来寻求大家的帮助。
-----------------------------------
我的论文如下:

1。客户端PC:通过浏览器访问Web服务器,读取空调参数并可以设置参数;
2。Web服务器端arm10:在pxa270的板子上实现一个基于嵌入式linux系统的Web服务器,并用Qt做了GUI,用CGI写了一些交互的服务端脚本;
3。模拟空调控制器端arm7:模拟空调的一个简单控制器,基于无操作系统的编程,可以实现串口的收发,收是中断解决的。

远处的客户端通过该Web服务器来达到控制另一个arm7的板子。三者无论哪一个改变空调参数,要保持三者的状态设置一致。

-----------------------------------
关于即时显示,Web服务器端与arm7之间的串口传输,三者同步,还没搞定。其余的工作已经完成。

先说一下我的实现方法:客户端PC访问arm10的Web服务器,一个读取和一个设置空调的参数的表单,在服务器端通过两个cgi脚本实现,设置的参数先保存在服务器端的一个文本文件,读取参数也是从该文本文件里读取。 服务器端Qt实现的GUI也可以读取和设置空调参数,分别用两个slots来实现,读取和设置同样是对那个文本文件。

1。即时显示问题
客户端或者服务器端,任一端设置了空调的参数,我必须去点击按钮,才能得到其最新的设置。想做成任一端改变,空调的参数就会即时改变的那种。想通过监视文本文件的修改的时间,如果时间变了,将自动运行read slots或者read.cgi。后来试试发现不行,不知道有没有什么更好的方法?

2。服务器arm10和arm7之间的串口传输
服务器每隔几秒钟通过串口发命令过去查询arm7的状态,arm7中断程序收到数据,并把空调状态参数通过串口发给服务器端。服务器端的收发通过一个select函数来控制,判断串口设备是否有数据,有数据就读并进行处理(写入文本文件中),没有数据就继续发发命令给arm7查询arm7状态。但是select函数好像不是很稳定。调试时,当我运行了收的程序,另一个板子发数据过来,可select还是返回为0(返回为0表示无数据)。 有没有更好的更稳定的方法实现?

3。三端同步
前面两个问题解决了,这个问题估计就比较容易了。


还有就是,感觉Web服务器端的程序太散了,如何协调他们的工作非常难。能否做成一个可执行文件里? 能否用多进程或者多线程来处理? 本人对进程和线程不太熟。能否不用文本文件,有什么其它更好的方法吗?

内容可能比较多,烦请各位了。在此谢过!!!
 楼主| 发表于 2007-4-17 14:56:32 | 显示全部楼层
雁过留声!烦请各位给个思路,或者方法,不胜感激!

其中,Web服务器端运行的linux系统是自己建立的一个小linux系统。成功做过LFS之后,有意外惊喜的发现了CLFS,本来打算用CLFS来构建自己的小linux系统的,可是一直有这样那样的诸多的问题,所以,后来就选择了busybox-1.4.1来做。

在线等待。。。。。。

有没有做过Apache或httpd的交叉编译?如果有的话,能否分享一下?不胜感激。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-18 17:20:33 | 显示全部楼层
怎么没人回啊,就算是给点建议也好啊。

minicom调试串口程序不会用,还有没有更好的串口调试工具。

谁有linux下比较健壮的收发串口的程序吗,有的话,可以发给我一份,多谢。
回复 支持 反对

使用道具 举报

发表于 2007-4-18 19:49:27 | 显示全部楼层
第一个问题:
客户端的HTML,<HEAD>中加入<MEATA HTTP-EQUIV="REFRESH" CONTENT=2>
可以定时2秒刷新一次页面

第二个问题:
我觉得select应该是比较稳定的函数,关键是几个参数是否使用正确
1. 每次调用select时,超时时间都要重新设置
2. select中用到的句柄号要比串口句柄大1

程序本身应该不复杂,但由于软件和硬件在一起,有时会给调试带来一些困难
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-18 19:59:42 | 显示全部楼层
呵呵,终于有人回了,非常感谢啊。
客户端自动刷新,是不是只是简单的刷新界面,和点击按钮>提交表单>调用cgi处理效果应该不同吧。

select参数设置都正确,有时会出问题。不知道是硬件还是软件的问题。有待于进一步测试。
回复 支持 反对

使用道具 举报

发表于 2007-4-18 20:20:06 | 显示全部楼层
客户端的那个方法,类似手工点“刷新”按钮,你可以把参数设置和实时数据显示放在两个页面

关于串口通讯那里,我除了使用select方法,还有另一个方法
创建一个线程,循环读取串口输入,然后sleep或nanosleep一会,虽然效率低一点,但小程序可能也无所谓
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-18 20:31:58 | 显示全部楼层
我按你说的方法试试,多谢啊!

现在先写论文了。
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表