Atmega64
Re: Atmega64
эээ... а можно поподробнее про этот компанент! Пытался его установить, но ничего не получилось! Расскажите как его на билдер поставить!
- Реклама
Re: Atmega64
какой Builder ?
Re: Atmega64
С++ Builder 6
Re: Atmega64
Скопируй папку с компонентом,чтобы не потерять,к примеру "Program Files->Borland" и далее
Component->Instal Component->Browse->(Тип файлов:.*pas)->BComPort->BCPort.pas->OK->YES->OK
File->Exit->No->Yes
Компонент во вкладке "Samples"
Component->Instal Component->Browse->(Тип файлов:.*pas)->BComPort->BCPort.pas->OK->YES->OK
File->Exit->No->Yes
Компонент во вкладке "Samples"
Re: Atmega64
Поставить получилось! Но вот может я дурак, а может нет хз
При попытки вытащить из ComboBox название порта и присвоить его соответствующему свойсву компанента вылазит вот это:
[Linker Error] Unresolved external '__fastcall Bcport::TBComPort::SetPortA(const System::AnsiString)' referenced from E:\RS232\НОВАЯ ПАПКА\UNIT1.OBJ
Код вот:
Вариант №1
AnsiString port;
port = ComboBox1->Text;
BComPort1->Port = port;
Вариант №2
BComPort1->Port = ComboBox1->Text;
[Linker Error] Unresolved external '__fastcall Bcport::TBComPort::SetPortA(const System::AnsiString)' referenced from E:\RS232\НОВАЯ ПАПКА\UNIT1.OBJ
Код вот:
Вариант №1
AnsiString port;
port = ComboBox1->Text;
BComPort1->Port = port;
Вариант №2
BComPort1->Port = ComboBox1->Text;
- Реклама
Re: Atmega64
В программе самое главное перебор всевозможных портов или связь девайса с компом?Связь по одному порту удалось наладить?
Re: Atmega64
Так. Победил вот такие вещи:
Открытие порта:
BComPort1->Open();
Закрытие порта:
BComPort1->Close();
Чтение с порта:
String Str;
PAsync Stat;
int n;
InitAsync(Stat);
BComPort1->ReadStrAsync(Str,Count,Stat);
BComPort1->IsAsyncCompleted(Stat);
n=BComPort1->WaitForAsync(Stat);
DoneAsync(Stat);
Memo1->Lines->Add(Str);
А вот запись пока не получается, так же как и программный выбор COM порта!
Открытие порта:
BComPort1->Open();
Закрытие порта:
BComPort1->Close();
Чтение с порта:
String Str;
PAsync Stat;
int n;
InitAsync(Stat);
BComPort1->ReadStrAsync(Str,Count,Stat);
BComPort1->IsAsyncCompleted(Stat);
n=BComPort1->WaitForAsync(Stat);
DoneAsync(Stat);
Memo1->Lines->Add(Str);
А вот запись пока не получается, так же как и программный выбор COM порта!
Re: Atmega64
Ещё вопрос-оно сильно нужно асинхронный опрос порта?Зачем строить себе сложности.Приём обычный,синхронный режим работы по событию OnRxChar,передача по таймеру.
Re: Atmega64
По большому счету всеравно каким способом будет передаваться инфа. Главное чтобы программа не сильно грузила комп (под устройсво выделен старенький копьютер) и возможность выбора COM порта. У меня получилось сделать прием данных с COM порта, а отправку осилить не могу. В спавке, компонента который порекомендовал Vov123, нету примера кода отправки данных. Если кто знает как реализовать на этом компаненте отправку данных, прошу помочь!(кинуть код) 
Re: Atmega64
Как пример
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
AnsiString a;
a = "Привет";
BComPort1->WriteStr(a);
}
Да,не подумал,может переменную надо отправлять
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
unsigned char a;
a = 255;
BComPort1->Write(&a,1);
И ещё добавлю-паниковать надо когда полный п..ц,раньше не стоит.
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
AnsiString a;
a = "Привет";
BComPort1->WriteStr(a);
}
Да,не подумал,может переменную надо отправлять
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
unsigned char a;
a = 255;
BComPort1->Write(&a,1);
И ещё добавлю-паниковать надо когда полный п..ц,раньше не стоит.
Re: Atmega64
Спасибо! Прием и отправка работает!
Итересно, а почему выбор порта программно не катит?!
Я это запомню!
Vov123 писал(а):И ещё добавлю-паниковать надо когда полный п..ц,раньше не стоит.
Re: Atmega64
AnsiString b ;
b = "COM" + Edit1->Text;
BComPort1->Port.operator =(b) ;
BComPort1->Open();
b = "COM" + Edit1->Text;
BComPort1->Port.operator =(b) ;
BComPort1->Open();
Re: Atmega64
А в Edit1 предпологается писать только номер порта или полное имя например "COM1"?
Re: Atmega64
из текста видно,что только циферку.Но если надо по другому,то кто остановит программиста? 
Re: Atmega64
Ура!!!! Спасибо!!!! 
Re: Atmega64
Вопрос по амеге64... Заню что в ней есть область памяти, где даные могут храниться даже если отключить питание МК. Но как в нее писать данные? Например у меня есть двумерный массив data[15][5], в него с ПК загружаются данные, с негоже по запросу даные выводятся в ПК, но если обесточить МК даные теряются и приходится заново их вбивать. Как сделать этот массив постоянно хранимым?
(пробывал объявлять его через flash int data[15][5], но ничего не получилось)
Re: Atmega64
Это называется EEPROM. Я для МК на 'С' не пишу, но думаю, что там в библиотеках д.быть подпрограмма работы с EEPROM. На асме это - десяток строк.H5Grey писал(а):Вопрос по амеге64... Заню что в ней есть область памяти, где даные могут храниться даже если отключить питание МК.
А если эти данные неизменные ( например, калибровочные коэффициенты для данного экземпляра прибора, для другого - другие ), то можно хранить и во флеш-памяти программ.
Re: Atmega64
С железом разобрался... спайл программатор на FT232RL, оно же является переходником USB-UART... все работает хорошо... вот только когда на компе принимаю данные своей программой, посылки иногда рвуться...
Например:
МК отправляет строку&<1,12,23,43,2,$
В основном моя программа принимает строку как надо, но иногда строка рвется... начало приходит одной посылкой, конец другой... Всебы ничего, но для программы важно обрабатывать пасылку целеком...
Для приема сообщений с COM порта сначало использовал стороний компонент, потом перешёл на стандартные средства билдера, однако оба варианта дают один и тот же результат... Возможно я что-то не учел... где-то ошибся... помогите!
Например:
МК отправляет строку&<1,12,23,43,2,$
В основном моя программа принимает строку как надо, но иногда строка рвется... начало приходит одной посылкой, конец другой... Всебы ничего, но для программы важно обрабатывать пасылку целеком...
Для приема сообщений с COM порта сначало использовал стороний компонент, потом перешёл на стандартные средства билдера, однако оба варианта дают один и тот же результат... Возможно я что-то не учел... где-то ошибся... помогите!


