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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2010, 17:02   #1
Linore
Пользователь
 
Регистрация: 18.01.2010
Сообщений: 95
По умолчанию Предача и чтение данных между двумя COM портами

Подскажите пожалуйста как огранизавать в Windows forms C++ связь между двумя компортами. С использование serialport. И как понять работают компарты или нет?
Linore вне форума Ответить с цитированием
Старый 20.01.2010, 17:42   #2
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

ну можно попробовать пропинговать...второй комп...
dampirik вне форума Ответить с цитированием
Старый 20.01.2010, 22:55   #3
Linore
Пользователь
 
Регистрация: 18.01.2010
Сообщений: 95
По умолчанию

Я хочу записать данные в один компорт и высветить их в другом и наоборот.
Linore вне форума Ответить с цитированием
Старый 21.01.2010, 16:43   #4
Linore
Пользователь
 
Регистрация: 18.01.2010
Сообщений: 95
По умолчанию

Я решила свою проблему и написала простейшую программу обмена данными
между двумя компами по ком порту.
Текст программы выглядит вот так
Код:
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
			 {
				   String^ s;   // число в техтбокс
				 //  String^ K;
			//	   int   intBytes; 
				     
			
//				   int^ b[10];   // число в техтбокс
                  s = textBox1->Text; //переменная S типа стринг вводимая в строку техтбох1
				//  K = Convert::ToString(buff);
		//	textBox2->Text=a ;   //переменная S типа стринг вводимая в строку техтбох2
  
		    //  if (serialPort1->IsOpen)             ///команда на открытие порта
				  //{ 
					 //       serialPort1->Close();             // команда на закрытие порта       
					 // 
      //                serialPort1->Write(s);           // команда на запись в порт

      //         
      //  
      //          }
                             // serialPort1->Open();               //команда на открытие порта
							 serialPort1->Write(s);                   //команда на запись
                      
//  intBytes = serialPort1->BytesToRead;   
//       serialPort1->Read(bb,0,intBytes);
  
// serialPort1->Open();  
	//		array<unsigned char>^ buff;      /// задание массива

     //   serialPort1->Read(buff,0,1);           //задание на чтение


  //serialPort1->Read(buff,0,1);           //зедание на чтение
			                // serialPort1->Close();             // команда на закрытие порта
			 }



private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) 
		 { 
			 serialPort1->Open();  //открытие порта 

		 }
private: System::Void serialPort1_DataReceived(System::Object^  sender, System::IO::Ports::SerialDataReceivedEventArgs^  e) 
		 {
              String^ a;
	        a = serialPort1->ReadExisting(); //считывание из ком порта
			 
		 }
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) 
		 {
           
		 }
};
}

Последний раз редактировалось MaTBeu; 21.01.2010 в 17:01.
Linore вне форума Ответить с цитированием
Старый 21.01.2010, 16:49   #5
Linore
Пользователь
 
Регистрация: 18.01.2010
Сообщений: 95
По умолчанию

Только у меня теперь другая проблема

когда я пишу так
Код:
private: System::Void serialPort1_DataReceived(System::Object^  sender, System::IO::Ports::SerialDataReceivedEventArgs^  e) 
		 {
              String^ a;
	        a = serialPort1->ReadExisting(); //считывание из ком порта
               Textbox2->text=a;
То он мне выдает ошибку

Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "textBox2" не из того потока, в котором он был создан.


Как это решить?

Последний раз редактировалось MaTBeu; 21.01.2010 в 17:01.
Linore вне форума Ответить с цитированием
Старый 21.01.2010, 17:01   #6
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

Очевидно, для компорта создается отдельный поток.
MaTBeu вне форума Ответить с цитированием
Старый 21.01.2010, 17:43   #7
Linore
Пользователь
 
Регистрация: 18.01.2010
Сообщений: 95
По умолчанию

Подскажи плиз а как его создать?
Linore вне форума Ответить с цитированием
Старый 21.01.2010, 18:05   #8
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

Код:
Textbox2->Text=a;
наверное, с маленькой буквы имя напишите, и лучше вот так вообще
Код:
this->textbox2->Text=a;
MaTBeu вне форума Ответить с цитированием
Старый 21.01.2010, 18:58   #9
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Хм..Н
Цитата:
едопустимая операция в нескольких потоках: попытка доступа к элементу управления "textBox2" не из того потока, в котором он был создан.
у меня на это же дебагер ругался когда делал приложение в несколько потоков...
Но компилировалось и работало нормально...
Не разобрался как избавиться от этого варнинга?
dampirik вне форума Ответить с цитированием
Старый 21.01.2010, 19:15   #10
Linore
Пользователь
 
Регистрация: 18.01.2010
Сообщений: 95
По умолчанию

Про код this->textbox2->Text=a; это я понимаю в проге у меня правильно поэтому и ошибка другая.


Как бороться с ошибкой

Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "textBox2" не из того потока, в котором он был создан.

Пока не знаю поэтому и очень прошу помощи

Я не очень долго работаю с Windows forms CLR C++
Поэтому не знаю как организовать несколько потоков
Linore вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разница между двумя datetimepicker Droid Общие вопросы Delphi 3 24.09.2009 23:20
Связь между двумя ОС Яр|/||< (^_^) Общие вопросы Delphi 8 06.07.2009 20:45
Разница между двумя Bitmap Seqular Общие вопросы .NET 2 25.04.2009 17:31
выборка между двумя датами UnChanter БД в Delphi 1 30.03.2009 21:09
Организация работы между портами Terran Работа с сетью в Delphi 2 16.01.2009 15:40