×
Namespaces

Variants
Actions

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

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

文章
huwell 在 24 Dec 2007 创建
最后由 hamishwillee 在 15 Dec 2011 编辑
  • 开发伙伴平台:

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端则需要运行一个程序以监听此端口。

This page was last modified on 15 December 2011, at 09:39.
48 page views in the last 30 days.
×