Добрый день!
У меня такая проблема: программа общается с устройством через Bluetooth как с Com портом.
В кпк порт на передачу com8, на приём com7. Но реально передача и приём работают на com8. Теперь вопрос: программа нормально принимает пакеты с устройства, пока не передать ему пакет с командой. Приём прекращается, а передача работает!
void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
if (FlagPorta)
{
byte c;
int buf_count = serialPort1.BytesToRead;
while (serialPort1.BytesToRead > 0)//(buf_count>0)
{
byte[] inputData = new byte[1];
// read the character
serialPort1.Read(inputData, 0, 1);
Encoding enc = Encoding.ASCII;
//displayString = enc.GetString(inputData, 0, inputData.Length);
//displayString = string.Empty;
//Обработчик получения байта из COM-port
c = inputData[0];
if ((fill_packet_flag == false) && (c != START))
{
return;
}
if (c == START) //если начало пакета -
{
fill_packet_flag = true; // - будем принимать пакет со след. символа
double_char_flag = false; //init
InBufLen = 0; //init
goto NextChar;
}
//БЫВАЕТ, что приходят символы ВНЕ пакета.
//но а если пакет уже на стадии приема, т.е. ПОСЛЕ старт-символа - то принимаем:
if (fill_packet_flag == true)
{
if (c == STOP) //если конец пакета -
{
InBuf2 = InBuf;
fill_packet_flag = false; // - завершаем прием пакета
FlagPorta = false;
ProcessPacket(); // !!! обработка пакета()
return; // и - выход
}
if (double_char_flag == true) //если это второй символ комбинации:
{
switch (c) // - то декодирование комбинации
{
case MODIF:
c = MODIF;
break;
case START_2:
c = START;
break;
case STOP_2:
c = STOP;
break;
default: //ошибка в кодировке пакета. Пакет отвергается:
fill_packet_flag = false;
return;
}
double_char_flag = false; //декодировали комбинацию.
}
else //и если первый:
{
if (c == MODIF) //начало комбинации(модификатор) ?
{
double_char_flag = true; //ничего не принимаем, exit, wait next
goto NextChar;
}
} //простой символ
}
//проверка на переполнение вх.буфера:
if (InBufLen >= MAXINBUFSIZE)
{
fill_packet_flag = false; //аннулируем пакет, возврат в исходное состояние.
//goto NextChar;
return;
}
//занесем символ с в буфер.
InBuf[InBufLen] = c; //занесение символа в буфер
InBufLen++;
NextChar:
c = 0;
}
}
return;
}
И передача:
private void SendPacket(byte Kommand)
{
byte CRC = 0;
byte[] OutBuf = new byte[5]; //длина пакета с учетом длины данных
//Заполняем пакет данных побайтно
OutBuf[0] = START;
OutBuf[1] = 64;
OutBuf[2] = Kommand;
//вычисляем CRC заголовка
CRC = CalcCS(OutBuf, 1, 2);
OutBuf[3] = CRC;
OutBuf[4] = STOP;
serialPort1.Write(OutBuf, 0, 5);
}
Помогите пожалуйста!
Виснет DataReceived! Помогите.
Средства разработки, технические вопросы, отвечает (по мере сил) Отдел Разработок
Закрыто
1 сообщение
• Страница 1 из 1
Вернуться в «Программирование для КПК»
Перейти
- Специально и отдельно
- ↳ Культурный флейм, слухи
- ↳ Palm? Pocket PC? ...? Проблема выбора
- ↳ Мобильные Приколы
- Windows Mobile, Pocket PC, MS Smartphone
- ↳ Windows Mobile и Pocket PC - общие вопросы
- ↳ HP iPAQ КПК и коммуникаторы
- ↳ HTC, Qtek, i-Mate, T-Mobile и другие HTC коммуникаторы
- ↳ Acer коммуникаторы
- ↳ Glofiish коммуникаторы (E-Ten)
- ↳ Fujitsu-Siemens Pocket LOOX
- ↳ ASUS коммуникаторы и КПК
- ↳ Gigabyte GSmart коммуникаторы
- ↳ Rover PC коммуникаторы
- ↳ WM Smartphone 5, MS Smartphone 2003, 2002
- ↳ Windows CE.NET, Wincent 320, WinCE клавиатурные
- Android и Chrome OS
- ↳ Коммуникаторы Android
- Нетбуки, MID, субноутбуки
- ↳ Нетбуки, MID, субноутбуки - Общие вопросы
- ↳ ASUS EEE
- eBook - электронные книги
- ↳ eBook, электронные книги - Общие вопросы
- ↳ Электронные книги ONYX (eBook)
- Apple iPhone, Palm, Symbian, Linux и прочие
- ↳ Apple iPhone
- ↳ Palm OS: Palm, Treo, Sony Clie и другие
- ↳ КПК и смартфоны на Linux: Zaurus, планшеты Nokia, прочее
- ↳ Symbian Series 90, Series 80, Series 60, Symbian UIQ
- ↳ Cassiopeia Casio BE-300
- ↳ Прочие платформы
- Проблемы, решения, советы
- ↳ Мобильный интернет, GPRS, WiFi, телефон + КПК
- ↳ Цифровые фото, видео и музыка на КПК
- ↳ Периферия и карты памяти CF, SD, MMC
- ↳ Внешняя периферия, аксессуары и уход за КПК
- ↳ Apple iPod mp3-плееры
- ↳ Программирование для КПК
- GPS и ГЛОНАСС навигация и оборудование для навигации
- ↳ АВТОСПУТНИК - персональная навигация
- ↳ АВТОСПУТНИК - Замечания по картам
- ↳ iGo, MioMap
- ↳ Nokia Maps
- ↳ GPS и ГЛОНАСС оборудование
- ↳ Навигация - общие вопросы
- ↳ PocketGPS Pro и MacCentre PocketGPS
- ↳ Программы GPS и ГЛОНАСС навигации
- Игры для КПК и смартфонов
- ↳ Игры для Pocket PC (Windows Mobile)
- ↳ Игры для Palm OS
- Избранные программы для КПК
- ↳ Преферанс для Pocket PC и Palm
- Ассоциация пользователей КПК и мобильных устройств
- ↳ Пилотовки Московского Палмклуба, Пилотовки регионов
- Остальное
- ↳ Обсуждаем материалы HPC.ru
- ↳ Обсуждаем Программы для КПК и смартфонов
- ↳ [OFF] Оффтопики не про КПК
- ↳ Пожелания и вопросы к редакции HPC.ru
- Куплю-продам-поменяю
- ↳ Куплю-продам Москва
- ↳ Куплю-продам Санкт-Петербург
- ↳ Куплю-продам Все регионы КРОМЕ Москвы и Питера