Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2015, 14:41   #1
nastya_nlo
Новичок
Джуниор
 
Аватар для nastya_nlo
 
Регистрация: 24.01.2015
Сообщений: 6
По умолчанию Com порт - не могу получить данные. Не срабатывает событие DataReceived

Есть электронные весы, которые можно подключить к компу через com-порт. Хотела написать программу, которая бы считывала данные, ну и в дальнейшем обрабатывала их, так, как мне надо.

В инструкции к весам написано:
Цитата:
"Весы оснащены интерфейсом RS-232 со скоростью передачи данных от 600 до 9600 бод.
Весы производят постоянную передачу данных на внешнее устройство в формате ASCII (8 бит данных без контроля четности). Пакет передачи данных представлен в табл. ......".
(таблицу нет наверное смысла приводить)

Я так поняла, что раз "Весы производят постоянную передачу данных на внешнее устройство", то запрос мне никакой отправлять не надо...

Застряла на том, что элементарно не могу получить никакие данные... Т.е. даже событие DataReceived судя по всему не срабатывает, потому что
Код:
label2.Text = "Сработало!";
не происходит.

Помогите, пожалуйста, разобраться!

Код следующий:

Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WeightAppNew
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            serialPort1.PortName = "COM8";
            serialPort1.BaudRate = 9600;
            serialPort1.Parity = Parity.None;
            serialPort1.StopBits = StopBits.One;
            serialPort1.DataBits = 8;
            serialPort1.Handshake = Handshake.None;
        }

        private void buttonOpen_Click(object sender, EventArgs e)
        {
            serialPort1.Open();
            labelConnect.Text = "Порт " + serialPort1.PortName + "  подключен";
        }

        private void buttonClose_Click(object sender, EventArgs e)
        {
            serialPort1.Close();
            labelConnect.Text = "Порт " + serialPort1.PortName + "  отключен";
        }

        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            label2.Text = "Сработало!";
            SerialPort sp = (SerialPort)sender;
            string indata = sp.ReadExisting();
            label2.Text = indata;
        }
    }
}
nastya_nlo вне форума Ответить с цитированием
Старый 24.01.2015, 15:58   #2
С.М.С
Участник клуба
 
Аватар для С.М.С
 
Регистрация: 29.12.2008
Сообщений: 1,598
По умолчанию

Для начала следует всё таки узнать с какой скоростью весы шлют данные и если битрейт настраивается, выставить общее значение.

Чтобы проверить, что данные доходят до компьютера и в соответствии с протоколом, посмотрите с помощью какого-либо СОМ терминала.
С.М.С вне форума Ответить с цитированием
Старый 24.01.2015, 16:38   #3
nastya_nlo
Новичок
Джуниор
 
Аватар для nastya_nlo
 
Регистрация: 24.01.2015
Сообщений: 6
По умолчанию

Скорость настраивается, выставлена 9600.
Скачала COM Port Toolkit - сам порт он видит, но никакие данные не приходят.
Может нужно какой-то запрос отправлять? только я не знаю, в каком виде
nastya_nlo вне форума Ответить с цитированием
Старый 24.01.2015, 16:55   #4
С.М.С
Участник клуба
 
Аватар для С.М.С
 
Регистрация: 29.12.2008
Сообщений: 1,598
По умолчанию

Попробуйте с этой. Если не получится, значит ищите инструкцию на весы. Как на весах кстати выставляется битрейт?
Вложения
Тип файла: rar Terminal.rar (321.0 Кб, 40 просмотров)
С.М.С вне форума Ответить с цитированием
Старый 24.01.2015, 16:55   #5
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

Доку читайте.
lomastr_ вне форума Ответить с цитированием
Старый 26.01.2015, 09:07   #6
nastya_nlo
Новичок
Джуниор
 
Аватар для nastya_nlo
 
Регистрация: 24.01.2015
Сообщений: 6
По умолчанию

С этой тоже ничего не поступает. Документация есть... стр.15-16 http://www.massa.ru/help/doc/VK_9_2013.pdf
nastya_nlo вне форума Ответить с цитированием
Старый 26.01.2015, 09:15   #7
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

Цитата:
Весы производят постоянную передачу данных на внешнее устройст-
во в формате ASCII (8 бит данных без контроля четности). Пакет переда-
чи данных представлен в Табл. 10.1.
Настрой согласно инструкции биты чётности, и стоповый бит.
Цитата:
Весы производят постоянную передачу данных
То есть ничего в весы слать не нужно. Нужно правильно настроить приёмный порт. Внимательно изучи документацию.

Последний раз редактировалось WinCoder; 26.01.2015 в 09:35.
WinCoder вне форума Ответить с цитированием
Старый 26.01.2015, 12:46   #8
С.М.С
Участник клуба
 
Аватар для С.М.С
 
Регистрация: 29.12.2008
Сообщений: 1,598
По умолчанию

Судя по инструкции, запрос отправлять не надо. Кабель для связи с компьютером шёл в комплекте?
Во всяком случае, для начала надо получить данные в терминалах, потом уже разбираться со своей программой.
С.М.С вне форума Ответить с цитированием
Старый 26.01.2015, 13:33   #9
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

С.М.С Так он в терминалах и не может получить, так как не прочитал инструкцию по настройке com соединения
WinCoder вне форума Ответить с цитированием
Старый 26.01.2015, 15:14   #10
nastya_nlo
Новичок
Джуниор
 
Аватар для nastya_nlo
 
Регистрация: 24.01.2015
Сообщений: 6
По умолчанию

С.М.С., нет, кабеля в комплекте не было. Использую купленный отдельно кабель COM - USB, т.к. в компьютере нет разъема rs-232

WinCoder, ну почему не прочитала? прочитала. Просто я пока туго в этом соображаю, но хочу разобраться.
Вот я настраиваю терминал в соответствии с инструкцией:
Цитата:
Весы оснащены интерфейсом RS-232 со скоростью передачи данных от 600 до 9600 бод.
Baud rate - 9600 (т.к. на весах по умолчанию стоит 9600)

Цитата:
Весы производят постоянную передачу данных на внешнее устройство в формате ASCII (8 бит данных без контроля четности).
Значит
Data bits - 8
Parity - none

А вот следующие пункты действительно я оставила по умолчанию:
Stop bits - 1
Handshaking - none

Я что-то не правильно выставляю? Если да, то объясните пожалуйста, буду признательна.
nastya_nlo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не yt могу получить данные из datagrid C# WPF Ctrl_alt Помощь студентам 0 05.04.2014 15:49
не могу получить данные из datagrid C# WPF Ctrl_alt WPF, UWP, WinRT, XAML 0 05.04.2014 15:27
ADOQuery не могу правильно получить данные после SELECT bakanaev Общие вопросы Delphi 3 16.03.2013 23:27
COM порт, не могу получить данные из порта Demien Общие вопросы Delphi 7 24.10.2012 22:39