ReadArray Method
Reads specified number of bytes from serial port to array.
Syntax
| Visual Basic | Function ReadArray(DataBuffer As array of Byte, BytesToRead As Long) As Long |
|---|---|
| Visual C++ (MFC) | long ReadArray(VARIANT *DataBuffer, long BytesToRead); |
| Visual C++ (#import) | LONG ReadArray(VARIANT *DataBuffer, LONG BytesToRead); |
Parameters
DataBuffer
[out] Array of received bytes
BytesToRead
[in, optional] Number of bytes to read from serial port
Return
Number of bytes read from serial port.
Errors
The method may throw exception. Use GetLastError method to get the error code.
Code Example
'--------------------------------------------------------------------
' Visual Basic 6 - Read array
'--------------------------------------------------------------------
Private Sub FTSPCControl1_OnReceive(ByVal Count As Long)
On Error GoTo ErrorHandler
Dim buf(1) As Byte
ReadCnt = FTSPCControl1.ReadArray(buf, 1)
If ReadCnt > 0 Then
For i = 0 To ReadCnt - 1
Text_Terminal.Text = Text_Terminal.Text + Chr(buf(i))
Next i
End If
Exit Sub
ErrorHandler:
Dim err_code As Integer
err_code = FTSPCControl1.GetLastError
MsgBox "ErrorCode = " & CStr(err_code) & " - " & Err.Description, _
vbCritical, "Error!"
End Sub
/////////////////////////////////////////////////////////////////////
// C++ Example - Read array
/////////////////////////////////////////////////////////////////////
void CSPCDemoDlg::OnReceiveFtspccontrol1(unsigned long Count)
{
SAFEARRAY* psa;
psa = SafeArrayCreateVector(VT_UI1, 1, Count);
VARIANT V;
V.vt = VT_ARRAY|VT_UI1;
V.parray = psa;
LONG ReadCnt;
try
{
ReadCnt = m_SPCControl1.ReadArray(&V, Count);
}
catch(COleDispatchException* E)
{
MessageBox(E->m_strDescription, mbCaption,
MB_OK | MB_ICONERROR);
}
m_edit_Terminal.GetWindowTextW(tmp_edit_text);
SafeArrayLock(V.parray);
for (int i = 0; i < ReadCnt; i++)
{
PCHAR P = (PCHAR)V.parray->pvData + i;
//Todo: add your code
}
SafeArrayUnlock(V.parray);
SafeArrayDestroy(psa);
}