文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Windows vc 读写串口

Windows vc 读写串口

时间:2011-03-27  来源:kwjlk

代码先:
#include <windows.h>
#include <tchar.h>
#include <stdio.h>

void PrintCommState(DCB dcb)
{
    //  打印输出DCB中的部分设置项的值
    _tprintf( TEXT("\nBaudRate = %d, ByteSize = %d, Parity = %d, StopBits = %d\n"), 
              dcb.BaudRate, 
              dcb.ByteSize, 
              dcb.Parity,
              dcb.StopBits );
}


int main( int argc, TCHAR *argv[] )
{
   DCB dcb;
   HANDLE hCom;
   BOOL fSuccess;
   DWORD bytesWritten =0;
   BYTE bErrorFlag = 0;
   char buffer[] = "This is some test data to write to the file.";
   TCHAR *pcCommPort = TEXT("COM1"); //  大多系统都该有的COM1串口

   //  打开指定串口号的读写句柄
   hCom = CreateFile( pcCommPort,
                      GENERIC_READ | GENERIC_WRITE,
                      0,      //  必须以独占方式打开
                      NULL,   //  默认安全参数设置
                      OPEN_EXISTING, //  必须是打开已存在的
                      0,      //  不重叠I / O
                      NULL ); //  打开串口hTemplate必须设置为NULL

   if (hCom == INVALID_HANDLE_VALUE) 
   {
       //  Handle the error.
       printf ("CreateFile failed with error %d.\n", GetLastError());
       return (1);
   }

   //  初始化 DCB 结构体.
   //SecureZeroMemory(&dcb, sizeof(DCB));   //VC6.0中无法定位该函数,根据字面意思更改为memset
   memset(&dcb, 0,sizeof(DCB));
   dcb.DCBlength = sizeof(DCB);

   //  获取串口的初始设置值
   fSuccess = GetCommState(hCom, &dcb);

   if (!fSuccess) 
   {
      //  Handle the error.
      printf ("GetCommState failed with error %d.\n", GetLastError());
      return (2);
   }

   PrintCommState(dcb);       //  Output to console

   //  设置DCB: 
   //  9,600 bps, 8 data bits, no parity, and 1 stop bit.
   dcb.BaudRate = CBR_9600;     //  baud rate
   dcb.ByteSize = 8;             //  data size, xmit and rcv
   dcb.Parity   = NOPARITY;      //  parity bit
   dcb.StopBits = ONESTOPBIT;    //  stop bit

  //设置端口的配置值 波特率什么的
   fSuccess = SetCommState(hCom, &dcb);
   
   if (!fSuccess) 
   {
      //  Handle the error.
      printf ("SetCommState failed with error %d.\n", GetLastError());
      return (3);
   }

        //向串口写数据
        bErrorFlag  = WriteFile(hCom,buffer,sizeof(buffer),&bytesWritten,NULL);

        //从串口读数据
        bErrorFlag = ReadFile(hCom,buffer,sizeof(buffer),&bytesWritten,NULL);
        _tprintf(buffer);
        

   //  再次获取COM端口的配置值.
   fSuccess = GetCommState(hCom, &dcb);

   if (!fSuccess) 
   {
      //  Handle the error.
      printf ("GetCommState failed with error %d.\n", GetLastError());
      return (2);
   }

   PrintCommState(dcb);       //  Output to console

   _tprintf (TEXT("Serial port %s successfully reconfigured.\n"), pcCommPort);
   
//关闭串口读写句柄
CloseHandle(hCom);
   
   return (0);

}
备注再: 串口读写代码参考http://msdn.microsoft.com/en-us/library/aa363201(VS.85).aspx CreateFile参考http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx CloseHandle参考http://msdn.microsoft.com/en-us/library/ms724211(VS.85).aspx SetUpComm参考http://msdn.microsoft.com/en-us/library/aa363439(VS.85).aspx Struct DCB参考http://msdn.microsoft.com/en-us/library/aa363214(VS.85).aspx 参考http://msdn.microsoft.com/en-us/library/ms810467.aspx#serial_topic3 再备注再: 参考连接都是英文的 Windows下向串口发送、读取数据。(最小支持Windows系统版本win2000,即win2000以上)。 这个vc6.0上跑过的代码,不知道还有没有其他方式读写串口。
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载