- Код: Выделить всё
ws.GetData AP.StartPacket, , 4
ws.GetData AP.FPS, , 4
ws.GetData AP.FramesDropped, , 4
ws.GetData AP.GrabDibDataSize, , 4
ws.GetData AP.EndPacket, , 4
Затем надо получить сами данные:
- Код: Выделить всё
ws.GetData aux_str, vbString, bytesTotal
a_Str = a_Str & aux_str
If Len(a_Str) = AP.GrabDibDataSize Then Call CopyMemory(VarPtr(ArrivalArray(0)), StrPtr(a_Str), AP.GrabDibDataSize)
Судя по описанию протокола сервера, данные - это развертка изображения 32 битного цвета (R,G,B, пустой байт)
А я получаю в ArrivalArray что то похожее на цветовые компоненты в таком формате:
(искаженный цвет, почти пусто, искаженный цвет, почти пусто, искаженный цвет, почти пусто, пусто, пусто)
то есть цветовой массив растянут в 2 раза и искажен. Связано ли это с тем, что в строке ws.GetData aux_str, vbString, bytesTotal указываю тип данных vbString и есть ли альтернативные пути получения массивов данных через winsock (хотя не принципиально winsock) без такого извращения как формирование строки и затем copymemort?