Рейтинг:
0
OriginalGriff
Попробуй:
SerialPort mySerialPort = new SerialPort();
mySerialPort.BaudRate = ... // Set your parameters;
...
mySerialPort.Open();
byte[] data = ... // your byte data;
mySerialPort.Write(data, 0, data.Length);
"Всю эту информацию я объявляю в массиве с именем array1 ,а затем вызываю этот array1 в последовательном порту записи"
Так почему же вы вчера не сказали нам: "это список целых чисел"?
С ними так просто иметь дело!
List<int> array1 = new List<int>();
array1.Add(1);
array1.Add(666);
array1.Add(int.MaxValue);
byte[] data = array1.SelectMany(BitConverter.GetBytes).ToArray();
ADI@345
где я должен вызвать свой массив ..
OriginalGriff
byte[] data = ... / / ваши байтовые данные;
ADI@345
На самом деле я хочу это знать,
Список массив1 = новый список();
Я должен написать этот array1 в serialWrite
OriginalGriff
Что это за список и как его преобразовать в последовательные данные - я этого не знаю, потому что не вижу вашего экрана. Так что дайте мне информацию для работы, и я постараюсь вам помочь - но общий список, который даже не говорит мне, что это за список, совсем не помогает!
ADI@345
Я не могу разместить свой код здесь..
OriginalGriff
Поэтому постарайтесь объяснить: я ничего не могу сделать без информации!
ADI@345
У меня есть мои данные в массиве, для которого я объявляю array1 здесь, этот array1 включает в себя мою информацию, которую я должен написать . Мне просто нужно записать этот array1 в последовательный порт записи.
OriginalGriff
Вы не можете просто написать список-неизвестного класса-в последовательный порт.
Сначала вам нужно преобразовать его в байтовые (или символьные) значения.
Подумайте об этом: даже если это был массив байтов, система на другом конце должна знать, сколько байтов ожидать, чтобы она знала, когда все это закончится!
И ваш список, вероятно, не является байтовыми значениями: это, вероятно, класс какой-то формы, что означает, что его размер в настоящее время неизвестен и может даже не быть одинаковым для двух разных экземпляров класса в списке.
Там нет общего "отправьте это .NET object", потому что последовательные порты ничего не знают о .NET!
Поэтому начните думать о том, что содержит список и что находится на другом конце последовательного порта. Чего он ждет? Ты тоже это пишешь?
ADI@345
как я буду сначала конвертировать байты или символы?
OriginalGriff
Проблема в том, что я понятия не имею, что вы пытаетесь преобразовать *из* - и это отличается, например, для int и string.
Помните, что я не могу видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли. :смеяться:
ADI@345
я не могу отправить свой код сюда..
ADI@345
Пожалуйста, дайте мне знать, буду ли я записывать свой массив записей в последовательный порт.
ADI@345
byte[] byteArray = новый байт[array1];
//Этот код дает ошибку :-
не удается неявно преобразовать тип System.коллекции.универсальный.список
OriginalGriff
Именно это я и говорю вам уже больше часа...
Ralf Meier
уважение... вы очень терпеливы ...
Ralf Meier
Что ОГ пытается тебе объяснить :
Какие данные вы заполнили (добавили )в свой общий список array1? Содержимое должно быть преобразовано (возможно, также в строку), прежде чем оно будет передано в serialport. Порт ничего не знает о содержании вашего списка ...
ADI@345
byte[] buffer = новый байт[array1]; //
как я исправлю эту строчку?. здесь array1 находится в int.. array1 содержит мою запись, которую я должен написать .. итак, должен ли я преобразовать этот array1 в строку..
Ralf Meier
Мы вращаемся по кругу ...
Мое предложение таково: вы покажете нам еще немного вашего кода и (что важно) то, что содержит ваш "array1" и как он входит в этот массив.
После этого мы должны создать своего рода метод преобразования, который создает что-то, что можно использовать для serialport. Но есть еще одна вещь, о которой мы забыли : что ждет приемник (программа на другой стороне сериального порта)? Другими словами : на какое устройство вы отправляете эти данные и что это устройство делает с этими данными ?
Если вы хотите сделать шаг вперед, вы должны начать с ответов на "наши" вопросы, и вы должны улучшить свой вопрос с большим количеством дополнительной информации.
ADI@345
Всю эту информацию я объявляю в массиве с именем array1 ,а затем вызываю этот array1 в последовательном порту записи
общественного недействительными записи(строки текста)
{
Последовательный порт mySerialPort = новый последовательный порт();
пробовать
{
mySerialPort.Имя_порта = comboBox6.Текст;
mySerialPort.Скорость = Конвертировать.ToInt32(comboBox7. Text);
mySerialPort.Открыть();
byte [] buffer = array1;
mySerialPort.Записи(буфера, 0, буфер.Длина);
}
поймать (исключение бывший)
{
Ящик для сообщений.Показать (например, сообщение);
}
mySerialPort.Рядом();
}
ADI@345
На самом деле я не могу разместить здесь весь свой код целиком...
OriginalGriff
Ответ обновлен.
Ralf Meier
Отлично... ;)
Но я полагаю, что это не решает проблему OP, потому что : Serialport.Писать-это одно, а получать данные-совсем другое. Кто получает данные ? Этот ответ (для меня) все еще отсутствует ...
OriginalGriff
К сожалению, вы можете дать правильные ответы только тем людям, которые слушают вопросы, которые вы им задаете...: вздох:
Я не уверен, что ОП понимает, что такое последовательный порт, а тем более то, что подключено на другом конце, если вообще что-то есть.
ADI@345
Согласно моему запросу, я не получаю никакого правильного ответа с вашей стороны.. я все еще путаю, как вызвать мой массив в последовательном порту записи .. если вы знаете, пожалуйста, ответьте, это срочно для меня ....
ADI@345
Я использую информацию, предоставленную вами , но одну вещь я хочу знать, что мне снова нужно объявить данные в array1 во время последовательной записи
array1. Add(1);
array1. Add(666);
массив1.Добавить(тип int.Максвеллову);
Byte[] данные = массив1.SelectMany(BitConverter.Метод getbytes).Метод toArray();
Ralf Meier
Нет... но вы должны объявить Array1 так же, как это сделал OG "List of INT"