"В начале процедуры таймер нужно отключить, а в конце процедуры включить" - А это как?
Интервал - 100 мс.
"В начале процедуры таймер нужно отключить, а в конце процедуры включить" - А это как?
Интервал - 100 мс.
Последний раз редактировалось metaforos; 20.12.2012 в 16:01.
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
Похоже в VS C++ как то иначе
Последний раз редактировалось Chip; 20.12.2012 в 19:14.
на С# делаю так:
на С++, думаю, будет мало отличаться.PHP код:
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) //по событию "пришли данные" читаем их и присваиваем значения переменным
{
bytes = serialPort1.BytesToRead; //считаем количество байт
byte[] data = new byte[serialPort1.BytesToRead];//массив принятых занчений
serialPort1.Read(data, 0, data.Length);//читаем
//здесь всякие условия типа количества байт, контрольные суммы, префиксы и т.д.
temp1=data[0]; //присваиваем значение переменной.
}
private void timer1_Tick(object sender, EventArgs e) //по таймеру обновляем label
{
label1.Text=temp1.ToString();
}
Вроде работает:
Это для передачи данных побайтово а не строкой, но смысл тот жеPHP код:
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e)
{
label1->Text=System::Convert::ToString(b);
}
private: System::Void serialPort1_DataReceived(System::Object^ sender, System::IO::Ports::SerialDataReceivedEventArgs^ e)
{
unsigned char bytes = serialPort1->BytesToRead;
int i=0;
if (bytes >= 8)
{
bytes = 0;
char data[10];
for(i=0;i<8;i++)
{
data[i]=System::Convert::ToChar(serialPort1->ReadChar());
}
b=data[1];
}
}
И не вешает форму?
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
Нет. все работает. добавил пару кнопок для проверки - все обрабатывается.
Расскажи пожалуйста, как мне твой код запустить на VS 2010 Express. Тот что ты написал на С++ у меня не работает.
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
Не компилируется или не работает с ардуино?
VS 2010 pro все в порядке.
В атаче весь проект.
12.rar
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuil d.targets(292,5): error MSB8009: .NET Framework 2.0/3.0/3.5 задают набор инструментов платформы v90. Убедитесь, что на данной машине выполнена установка Visual Studio 2008.
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
Скомпилировал твой код. Кнопка работает (+1), а вообще, не работает. Постоянно 0 пишет. Я думаю, как таймер в отдельный поток засунуть? Может быть поможет?
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
В отдельном потоке достаточно будет цикла whileЯ думаю, как таймер в отдельный поток засунуть? Может быть поможет?
Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)