我想用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?
谢谢,非常感谢所有帮助。