中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > Web开发 > PHP > PHP综合
读写串行口数据,理论上很简单,PHP倒没试过。。。
作者:佚名 时间:2004-11-06 10:55 出处:互连网 责编:chinaitpower
              摘要:读写串行口数据,理论上很简单,PHP倒没试过。。。
我没看过PHP源码,但它有文件操作函数,我想应该可以吧?实在不行,那么做个CGI来实现也可以,而且独立性好,容易维护。以前我在BCB环境下做过,思路如下:(其实相当于普通的文件读写操作,呵呵)

一、打开文件

//先用文件方式打开一个串口(COM1~~COM4中任一个)
HANDLE m_hComm = CreateFile("COM2", GENERIC_READ | GENERIC_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);

然后就可以用WriteFile()和ReadFile()来对串行口进行读写了,最后记得CloseHandle(m_hComm);把当前打开的串行口关闭哦。
由于CreateFile()函数采用FILE_FLAG_OVERLAPPED常量,那么注意一下WriteFile()和ReadFile()函数的最后一个参数是OVERLAPPED结构的,读写前需要先初始化该结构:

OVERLAPPED m_ov;

m_ov.Offset = 0;
m_ov.OffsetHigh = 0;
m_ov.hEvent = NULL;

好了,上面已经打开COM2,那么就进行简单读写:

二、写:

BOOL bResult = true;
char* m_WriteBuffer;
DWORD BytesSent = 0;

strcpy(m_WriteBuffer, "试试写进去");
bResult = WriteFile(m_hComm, m_WriteBuffer, strlen((char*)m_WriteBuffer), &BytesSent, m_ov);


三、读:

COMSTAT comstat;//该结构包含通信设备的状态。
BOOL bResult = true;
DWORD dwError = 0;
DWORD BytesRead = 0;
unsigned char m_ReadBuff;
//开始循环读
for (;;)
{
  bResult = ClearCommError(m_hComm, &dwError, &comstat);//更新COMSTAT结构并清除所有错误
  if (comstat.cbInQue == 0)
  {
    break;//如果读完了就退出for循环
  }

  bResult = ReadFile(m_hComm, &ReadBuff, 1, &BytesRead, m_ov);//一次读一位,如果喜欢,你也可以一次读n位
  ......
  //在这里放入你的处理模块,反正ReadBuff里是内容(1位),可以合并起来......
  ......
}

四、关掉
CloseHandle(m_hComm);


以上思路可以通过函数返回值进行错误处理,至于各错误常量的意思可以查书,完整处理是麻烦点,知道方法就可以了,只要你是简单应用,那么简单读写就足够了。这个文件读写方式还适用于打印口LPT1、LPT2~~~LPTn。在Unix下我没试过,但既然Unix类的操作系统比Windows更加强调设备文件,相信在Unix、Linux下用文件方式读写COM口更简单更通用吧。。。?还是这句:知道方法就行。该出手时就出手。^_^
不过如果在Unix、Linux下作为CGI来用的话,可能要设置编译后CGI文件的权限,自己试哦。
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有