串行通信读取线C ++

时间:2013-04-16 17:12:24

标签: c++ python symbian pyserial pys60

我想用Symbian C ++从串口读取一行,但为了做到这一点,我必须继续读入缓冲区,直到达到“/ n”。我不知道怎么做。这实际上是一个Python项目,但我正在尝试使用从PySerial移植的必要函数创建一个C ++库。 Al我仍然要端口是“readline尽管。

以下是它的原始Python代码:

def readline(self, size=None, eol=LF): 
     """read a line which is terminated with end-of-line (eol) character
     ('\n' by default) or until timeout."""
     leneol = len(eol)
     line = bytearray()

     while True: 
         c = self.read(1)
         if c: 
             line += c 
             if line[-leneol:] == eol: 
                 break 
             if size is not None and len(line) >= size: 
                 break 
         else: 
             break
     return bytes(line)

我的库基于PyS60USB,它已经实现了以下内容来读取至少一个字节:

TUint8* buf = 0;
TPtr8 tmp(buf, 0);
TInt err;
TBool alloc_ok = EFalse;

Py_BEGIN_ALLOW_THREADS;         
TRAP(err,
   buf = (TUint8*) User::AllocLC(1);
   tmp.Set(buf, 0, 1);
   alloc_ok = ETrue;
   self->iConnManager->RecvL(tmp, timeout);
   CleanupStack::Pop(buf);
   );
Py_END_ALLOW_THREADS;

我现在的问题是,如何将上述Python代码翻译成Symbian C ++代码,将所有读取字节添加到缓冲区并连续检查缓冲区是否为eol?

谢谢,非常感谢所有帮助。

0 个答案:

没有答案