在S60第三版手机上通过USB线进行串行通信

http://tech.ddvip.com   2008年09月08日    社区交流

内容摘要:RComm API可以通过USB串号通信传输数据。在S60第三版上,无须加载物理(PDD)和逻辑(LDD)设备驱动。只要加载CSY module ECACM即可。

  开发伙伴平台:

  S60 3rd Edition

  S60 3rd Edition, FP1

  详细描述

  RComm API可以通过USB串号通信传输数据。在S60第三版上,无须加载物理(PDD)和逻辑(LDD)设备驱动。只要加载CSY module ECACM即可。

  USB通信的端口名一般为“ACM::1”,某些手机可以支持多个ACM端口。第一个端口(ACM::0)是为fax/modem处理保留的,而ACM::1及向后的其他端口都可以在其他程序中使用。

  一个初始化串行端口的实例:

_LIT(CSYMOD, "ECACM");   _LIT(KACMPort1, "ACM::1");      // RComm is a client to the RCommServ Comms server    // Start this service before any connections are made.      TInt ret = StartC32();    if ( ret!= KErrNone && ret!= KErrAlreadyExists )     {     User::Leave ( ret );     }     // Connect to CommServer    RCommServ server;    User::LeaveIfError( server.Connect() );     // Load CSY Module    User::LeaveIfError( server.LoadCommModule( CSYMOD ) );     TBuf16<KMaxPortName> portName;    portName.Copy( KACMPort1 );     // Open the comm. port   RComm commPort;    User::LeaveIfError( commPort.Open( server, portName, ECommShared ) );      // Verify capabilities of the port and configure it     TCommCaps portCaps;    commPort.Caps( portCaps );     if (((portCaps().iRate & KCapsBps115200) == 0) ||      ((portCaps().iDataBits & KCapsData8) == 0) ||      ((portCaps().iStopBits & KCapsStop1) == 0) ||      ((portCaps().iParity & KCapsParityNone) == 0))    {      User::Leave( KErrNotSupported );    }     TCommConfig portCfg;    commPort.Config( portCfg );     portCfg().iRate   =  EBps115200;    portCfg().iParity  =  EParityNone;    portCfg().iDataBits =  EData8;    portCfg().iStopBits =  EStop1;    portCfg().iHandshake = 0;     User::LeaveIfError( commPort.SetConfig( portCfg ) );

  在此之后你可以向端口进行读写操作,PC端则需要运行一个程序以监听此端口。

来源:诺基亚    作者:佚名    责编:豆豆技术应用

正在加载评论...