Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/65: Рейтинг темы: голосов - 65, средняя оценка - 4.63
20 / 20 / 4
Регистрация: 31.10.2010
Сообщений: 1,239
Записей в блоге: 2
1

Передача данных через com -порт на микроконтроллер

27.05.2012, 14:59. Просмотров 12436. Ответов 5
Метки нет (Все метки)

Добрый день. Учусь передавать данные на микроконроллер. Данные передаются по com порту. Почитал информацию и своял во это:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace ComPort
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            serialPort1.Open();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string message = Convert.ToString(textBox1.Text);
            serialPort1.WriteLine(message);
            serialPort1.Close();
        }
 
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            serialPort1.Close();
        }
    }
}
Где бокс1 - туда можно вписать сообщение для отправки, бокс2 - в него должно приходить сообщение с порта.
Подскажите пожалуйста:
1)когда запускаю, компилятор ругается, говорит, что нет такого порта. В чем дело?
2)Как сделать чтобы именно на com 19 данные отсылались?
3)Что написать, чтобы данные, посланные с устройства, появлялись в боксе2?
4)На микроконтроллере я установил соединение со скоростью 9600, в шарпе важно ли задавать скорость? Если да, то как?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2012, 14:59
Ответы с готовыми решениями:

Передача данных через Com порт
Добрый день форумчане! Мне с помощью программы "free-serial-port-monitor" удалось считал данные,...

Передача данных через ИК порт
Нужно организовать систему передачи данных через инфракрасный на ассемблере. ИК должен...

Передача данных через последовательный порт
Ребят, всем добрый вечер! Предстоит следующая задача: нужно реализовать, например - в отдельном...

Передача и приём данных через COM-порт
Добрый день! Передо мной поставили задачу написать программу для работы с адаптером OBD2 Elm327...

5
Эксперт С++
1898 / 1730 / 254
Регистрация: 03.05.2011
Сообщений: 3,930
Записей в блоге: 10
27.05.2012, 15:05 2
Цитата Сообщение от Костяныч Посмотреть сообщение
1)когда запускаю, компилятор ругается, говорит, что нет такого порта. В чем дело?
2)Как сделать чтобы именно на com 19 данные отсылались?

4)На микроконтроллере я установил соединение со скоростью 9600, в шарпе важно ли задавать скорость? Если да, то как?
Диспетчер устройств - Порты (COM и LPT), никакого COM19 наверняка вы там не увидите, а только список доступных на мат.плате COM-портов и подключённых устройств через USB с драйвером от COM-порта. Скорость COM-порта меняется во вкладке Параметры порта.
1
20 / 20 / 4
Регистрация: 31.10.2010
Сообщений: 1,239
Записей в блоге: 2
27.05.2012, 18:53  [ТС] 3
С ноута сижу, на нем 19 порт появляется, когда подключаю микроконтроллер.
Мне бы очень сильно код помог, хотя бы по строчке на каждый пункт.
0
Эксперт С++
1898 / 1730 / 254
Регистрация: 03.05.2011
Сообщений: 3,930
Записей в блоге: 10
27.05.2012, 19:33 4
точно при подключении устройства появляется именно 19 порт?, и при этом нет никаких ошибок\отсутствие драйверов в Диспетчере устройств? Потому что вот такой код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.IO.Ports;
using System.Windows.Forms;
 
namespace example
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
 
            var data_for_controller = new byte[100];
            SerialPort port = new SerialPort("COM1");
            port.Open();
            port.Write(data_for_controler, 0, data_for_controler.Length);
            port.Close();
        }
    }
}
работает идеально. Если я ставлю COM19 (да и вообще другой любой кроме первого) компилятор ругается "Порт 'COM19' не существует.", т.к. физически этого порта просто не существует. То что, ваше устройство создаёт некий COM-порт это ничего не значит, ведь вы подключаете его по шине скорее всего COM1, вот и работайте на этом порте. Попробуйте например прочитать данные с устройства через COM1 (точнее тот, который у вас есть физически на мат.плате) и записать эти данные в файл в файл.
1
20 / 20 / 4
Регистрация: 31.10.2010
Сообщений: 1,239
Записей в блоге: 2
27.05.2012, 21:04  [ТС] 5
В том-то и прикол, что у меня ноут. На нем нет портов. И когда компилирую программу, которую я выложил, говорит что нет порта 1.((((

Добавлено через 1 час 7 минут
Ура отправляет, хотел принимать данные но говорит что из другого потока не модет к боксу 2 обратиться, как быть?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using System.Threading;
 
 
namespace ComPort
{
    public partial class Form1 : Form
    {
        SerialPort port;
        Thread readThread;
        public Form1()
        {
            InitializeComponent();
            port = new SerialPort("COM19");
            port.Open();
            readThread = new Thread(read);
            readThread.Start();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string message = Convert.ToString(textBox1.Text);
            port.WriteLine(message);
        }
 
        private void read()
        {
            while (true)
            {
                try
                {
                    string mess = port.ReadLine();
                    textBox2.Text = mess;
                catch (TimeoutException) { }
            }
        }
 
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            port.Close();
        }
    }
}
0
603 / 578 / 157
Регистрация: 29.06.2010
Сообщений: 1,610
22.08.2013, 09:35 6
Цитата Сообщение от Костяныч Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
private void read() 
{ 
while (true) 
{
try 
{
 string mess = port.ReadLine();
 /*-->*/textBox2.Text = mess; 
catch (TimeoutException) { } 
} 
}

C#
1
BeginInvoke(new MethodInvoker(()=>textBox2.Text = mess));
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2013, 09:35

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Передача и приём данных через COM порт
Задача такая, нужно через ком порт передавать и принимать пачки байтов, всё это по протоколу modbus...

Получение и передача данных через COM порт
Добрый день Мне кажется, я изобретаю велосипед и должно быть полно примеров такого кода. Но...

Чтение/передача данных через USB порт
Задача такова: есть внешний микроконтроллер (Arduino) который связан с ПК ч/з USB (некоторый...

Передача данных через COM - порт. Подключение к оборудованию
Здравствуйте. У меня задача, написать программу для удаленного управления Аким 1303. Я установил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.