在S60第三版手机上通过USB线进行串行通信
From Forum Nokia Wiki
- 开发伙伴平台:
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端则需要运行一个程序以监听此端口。