µ±Ç°Î»ÖãºLinux½Ì³Ì - Php - ¶Áд´®ÐпÚÊý¾Ý£¬ÀíÂÛÉϺܼòµ¥£¬PHPµ¹Ã»ÊÔ¹ý¡£¡£¡£

¶Áд´®ÐпÚÊý¾Ý£¬ÀíÂÛÉϺܼòµ¥£¬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À