Member 14120682 Ответов: 2

Невозможно неявно преобразовать тип string[] в int[]


int[]temp_buf=новый int[200];
temp_buf[] = serialPort1.ReadExisting();

Что я уже пробовал:

cannot implicitly convert type string[] to int[]

2 Ответов

Рейтинг:
1

RickZeeland

Видеть Массив.ConvertAll() метод, пример здесь: C# | преобразование массива одного типа в массив другого типа - GeeksforGeeks[^]


Рейтинг:
0

OriginalGriff

Почему вы пытаетесь хранить строку (которая в лучшем случае является массивом символов) в массиве целых чисел?
То, что вам нужно сделать, зависит от того, что именно посылает вам устройство на другом конце последовательного порта: и, вероятно, это вовсе не "непосредственно" числовое значение - это либо строка, содержащая целочисленные значения с разделителями, либо последовательность байтовых значений, которые вообще не должны приближаться к строке (потому что значения char-это 16-битные значения Unicode, и перевод при возникновении может повредить ваши байтовые данные).

Поэтому начните с того, чтобы посмотреть, что именно посылает устройство - возможно, с помощью Последовательный порт.Метод Read (Системы.ИО.Порта) | Майкрософт Документы[^] вместо того, чтобы ReadExisting таким образом, вы получаете "сырые" данные - и точно определяете, что должно прибыть.
И имейте в виду, что данные последовательного порта очень медленны по сравнению с вашим процессором, поэтому очень маловероятно, что вы получите "все сообщение" за один вызов для чтения или ReadExisting - поэтому преобразование данных непосредственно по мере их поступления может быть очень плохим способом сделать что-то.