Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Вниз

Проблема со считыванием данных из com- порта.   Найти похожие ветки 

 
tria ©   (2006-07-20 19:29) [0]

Добрый день.
Пишу внешнюю компоненту 1С для подключения весов.
Весы постоянно выдают в com-порт посылку из 8 байт с текущим весом.
Запускается отдельный поток, в котором с помощью комманд типа:
hCom:=CreateFile( "COM1",GENERIC_READ....
ReadFile(hCom,boof,...
sleep(_SleepInterval);
происходит постоянный опрос порта.
Вроде как все считывается нормально. Если я из этого же потока передаю данные в 1С (с помощью внешнего события), то данные передаются нормально.
Если же я из 1С по обработке ожидания (аналог таймера) обращаюсь к компоненте к общим переменным, куда пишется текущий вес, то я получаю устаревший вес, с отставанием где-то в секунд 20-30. При чем отставание не ровное, а скачками, т.е. могут быть пропуски в весах.
Кто-то может подсказать, отчего это может быть?


 
tesseract ©   (2006-07-20 22:06) [1]

> Кто-то может подсказать, отчего это может быть?

от Sleep. Лучше поищи по Winapi - там совсем недавно была ветка про это.

И кстати лучше использовать ОбработкаВнешнегоСобытия.

ЗЫ: Петровес?


 
tria ©   (2006-07-21 10:27) [2]

Седал простейший эмулятор. Код потока, который должен читать данные из порта:
repeat
  CurWeight:=Random(10);
  For i:=0 to 10000000 do _CurWeight:=CurWeight;
  MyObject.iEvent.ExternalEvent(c_AddinName, "ScaleWeight",FloatToStr(_CurWeight));
  sleep(1000);
until;

Соответственно, по ОбработкеОжидания считываю данные из CurWeight. Никакого такого эффекта не наблюдается.
Проверял с помощью внешнего отчета, где по ОбработкаВнешнегоСобытия и ОбработкеОжидания дается команда показа текущего веса.

п.с.
ОбработкаВнешнегоСобытия не совсем хороша. Если войти в меню, а в это время идет ее вызов, то меню закрывается. Происходит какое-то "передергивание" всей 1С, работать при этом невозможно.
Весы какой-то Днепропетровской фирмы (покрайней мере они устанавливали). Звонили с предприятия, они уже сгорели :)


 
tesseract ©   (2006-07-21 10:32) [3]

После каждого считывания чисть порт!  - Из буфера же т

Используй маску ожидания, и отложенное чтение. Т.К при чтении ты прочитаешь всё, что весы тебе в буфер надавали.

К тому же отложенное чтение легко убивается CancelIO(handle).


 
tria ©   (2006-07-21 12:35) [4]

Для меня проблема еще в следующем.
Там, где есть весы - нет инета.
Там где есть инет (работа) - нет весов.

Решил сделать эмулятор весов - на одном компе будет стоять программулина, которая схоже с весами будет давать в порт данные.
Как сделаю - буду пробовать, напишу о результатах.


 
tesseract ©   (2006-07-21 12:46) [5]


> Решил сделать эмулятор весов - на одном компе будет стоять
> программулина, которая схоже с весами будет давать в порт
> данные.


где-то такое видел, прога записывает протокол а потом воспроизводит.

А без интернета программа не работает?


 
tria ©   (2006-07-21 13:19) [6]

Инет - источник информации :)
Я ж больше 1С-ник чем делфист...


 
tesseract ©   (2006-07-21 13:24) [7]


> Я ж больше 1С-ник чем делфист...


Я наоборот :-)



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.051 c
15-1163347205
К.
2006-11-12 19:00
2006.12.03
Ноутбук, гаснет экран


2-1163438458
Troan_81
2006-11-13 20:20
2006.12.03
Работа с директориями


6-1152261039
Alexey_
2006-07-07 12:30
2006.12.03
Задержка при подключении через сокетные компоненты


4-1153829366
sVic
2006-07-25 16:09
2006.12.03
Как определить владельца файла(NTFS)


2-1163580497
Магедон
2006-11-15 11:48
2006.12.03
как убрать мерцание мышки?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский