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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2012, 22:21   #1
LuMax
Пользователь Подтвердите свой е-майл
 
Регистрация: 24.11.2007
Сообщений: 53
По умолчанию отправляются не коректные данные на COM порт

Добрый день. У меня есть некое устройство которое подключено к COM23. Если на устройство передается '1'(то есть char '1'или 49 в значениях) то оно загорает. проблема в том что на устройство приходит не верное значение. я проверил через консоль на putty отправлял '1' все работало. На С# не хочет. Проверил на С все работало(через вин апи).
[CSHARP]using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.Threading;

namespace MSP430_Test1
{
class Program
{
static void Main(string[] args)
{
try
{
SerialPort port = new SerialPort("COM23", 4800, Parity.Even, 8, StopBits.Two);
port.Open();
port.DiscardInBuffer();
port.DiscardOutBuffer();
char[] a = {(char)49};
port.Write(a, 0, 1);
port.Close();
}
catch (Exception e) { throw e; };
}
}
}[/CSHARP]
Я тут отправляю как массив char . пробовал как стринг и как массив байтов одна ошибка.



[CPP]#include<windows.h>
#include <iostream>
#include <fstream>
#include <tchar.h>
#include<iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
_TCHAR pname[]=_T("\\\\.\\COM23") ;

HANDLE Port;
//. . .
Port = CreateFile((LPCWSTR)pname, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (Port == INVALID_HANDLE_VALUE) {
MessageBox(NULL, (LPCWSTR) "Невозможно открыть последовательный порт", (LPCWSTR)"Error", MB_OK);
ExitProcess(1);
}
//. . .

char s='1';
DWORD real_write;
DCB dcb;
BOOL succ;
ifstream in;
dcb.DCBlength=sizeof(DCB);
succ=GetCommState(Port,&dcb);
dcb.BaudRate=9600;
dcb.ByteSize=8;
dcb.Parity=EVENPARITY;
dcb.StopBits=2;
succ=SetCommState(Port,&dcb);
WriteFile(Port,&s,1,&real_write,NUL L);
CloseHandle(Port);[/CPP]
LuMax вне форума Ответить с цитированием
Старый 17.10.2012, 22:26   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Какая ошибка?
eval вне форума Ответить с цитированием
Старый 17.10.2012, 23:02   #3
LuMax
Пользователь Подтвердите свой е-майл
 
Регистрация: 24.11.2007
Сообщений: 53
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
Какая ошибка?
Ошибки не какой . Просто туда приходит не 49, то есть символ '1' ,а что-то другое. Причем на с работает,и тестил через консоль на putty - работает коректно
LuMax вне форума Ответить с цитированием
Старый 17.10.2012, 23:39   #4
LuMax
Пользователь Подтвердите свой е-майл
 
Регистрация: 24.11.2007
Сообщений: 53
По умолчанию

Все оказалось проще . Я над этим голову ломал 2 дня . А все не внимательность .
Просто на штучке стояло скорость 9600,а тут 4800; и они не успевали прочитаться .
Это говорит о том что нужно высыпаться.(Это так лирика)
LuMax вне форума Ответить с цитированием
Старый 17.10.2012, 23:40   #5
LuMax
Пользователь Подтвердите свой е-майл
 
Регистрация: 24.11.2007
Сообщений: 53
По умолчанию

Все оказалось проще . Я над этим голову ломал 2 дня . А все не внимательность .
Просто на штучке стояло скорость 9600,а тут 4800; и они не успевали прочитаться .
Это говорит о том что нужно высыпаться.(Это так лирика)
LuMax вне форума Ответить с цитированием
Старый 18.10.2012, 03:42   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...а вы не спали?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 18.10.2012, 09:31   #7
LuMax
Пользователь Подтвердите свой е-майл
 
Регистрация: 24.11.2007
Сообщений: 53
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
...а вы не спали?
Да просто. Это хобби . Занимаюсь этим ночью.
LuMax вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл. Не отправляются повторно запросы. Зод Работа с сетью в Delphi 4 17.02.2012 23:30
Не полностью принимаются данные через UDP порт Terran Работа с сетью в Delphi 6 26.01.2011 16:56
Delphi. Можно ли отправить данные через порт открытый другой программой? losticsx Помощь студентам 2 24.08.2010 19:47
COM порт, как принять данные? gusluk Общие вопросы Delphi 3 11.09.2009 08:10
Как записать в com -порт или модем двоичные данные sergrom Win Api 10 25.06.2007 15:15