我想用 Symbian C++ 从串行中读取一行,但要做到这一点,我必须继续读入缓冲区,直到到达“/n”。我不知道该怎么做。这实际上是一个 Python 项目,但我正在尝试使用从 PySerial 移植的必要函数创建一个 C++ 库。我仍然需要移植的是“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?
谢谢,所有帮助将不胜感激。