COM port под NT/XP
10 отговора
444 прегледа
COM port под NT/XP
Обърках клуба...
Питах в програмисти как се отваря порт в WinNt/XP.
Както винаги те ме пратиха в 5 глуха по линията Цюрих-Мюнхен.
После се сетих, "че кой по добре от електончиците отваря портове"...
няма такъв.
Та пробелма ми е следния имам програмка писна на Паскал за Делфи.
Тя отваря COM порта на компютера после пише и чете в него без проблеми
под Win9x, НО ! под XP не може да отвори порта. (ползвам един VCL,
писан яко на асемблер).
1. Има ли начин без да бъркам в кода да я подкарам и под XP?
2. Понеже контролката е много готина и скъпа: АsyncPro на Turbo Power,
мисля си дали ако я компилирам под XP, ще си включи необходимите
директиви и няма да си тръгне безпроблемно?
Питах в програмисти как се отваря порт в WinNt/XP.
Както винаги те ме пратиха в 5 глуха по линията Цюрих-Мюнхен.
После се сетих, "че кой по добре от електончиците отваря портове"...
няма такъв.
Та пробелма ми е следния имам програмка писна на Паскал за Делфи.
Тя отваря COM порта на компютера после пише и чете в него без проблеми
под Win9x, НО ! под XP не може да отвори порта. (ползвам един VCL,
писан яко на асемблер).
1. Има ли начин без да бъркам в кода да я подкарам и под XP?
2. Понеже контролката е много готина и скъпа: АsyncPro на Turbo Power,
мисля си дали ако я компилирам под XP, ще си включи необходимите
директиви и няма да си тръгне безпроблемно?
Re: COM port под NT/XP
Ами значи аз имам модул, SynC32а също и още един, не с есещам, а ако ползваш делфи .... даже имам два които работят под ХР, не му разбирам много на винбоз, но за хардуера който правя ми се налага да понаписвам по нещо, та тва работи. Другия вариант е DOS, там дори и под XP емулацията ти позволява да отваряш портовете.
Re: COM port под NT/XP
Не съм бачкал на делфи, но знам, че може да използва OCX-ите на ВБ. Та аддни му един MSCOMM контрол от ВБ6 примерно и действай с него - би трябвало да стане. Аз съм правил за един разработчик на делфи OCX в който се съдържаше този контрол (е, вършеха се и др. работи) и си работеше без проблем в делфито моя OCX написан и компилиран на ВБ.
......
А в 33 - распяли, но не сильно.
.......
......
А в 33 - распяли, но не сильно.
.......
Re: COM port под NT/XP
samo deto prokletite biblioteki na delphi ponqkoga ne chuvat kakvo stava na vhoda
osobenno ako rabotish s malki paketi ...
pod XP e oshte po tragichna rabotata.
osobenno ako rabotish s malki paketi ...
pod XP e oshte po tragichna rabotata.
Re: COM port под NT/XP
Аз също работя на Делфи. 4 и 5
за XP ползвам безплатен компонент VssComm32 и си работи. Тествал съм го на NT,95,98,2000,XP и сие. Пусни едно тъсене и си го изтегли.
за XP ползвам безплатен компонент VssComm32 и си работи. Тествал съм го на NT,95,98,2000,XP и сие. Пусни едно тъсене и си го изтегли.
Re: COM port под NT/XP
Ми то там някой ти беше написал какво трябва, ама кой да чете ?
Начина е следния:(пример - COM1)
1. hComm = Create File("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); - отваряш порта
2. SetCommState(dcbNew); - казваш му скорости, контрол и т.н.
3. ReadFile(hComm, buf, howMuchBytes, &readBytes, NULL); или WriteFile(hComm, buf, howMuchBytes, &writtenBytes, NULL); - приемаш или изпращаш howMuchBytes
Всичко до тук е преносимо (WIN32 API), т.е. върви по един същ начин и под Win95, и под WinXP.
p.s.
msdn.microsoft.com, search ReadFile
Начина е следния:(пример - COM1)
1. hComm = Create File("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); - отваряш порта
2. SetCommState(dcbNew); - казваш му скорости, контрол и т.н.
3. ReadFile(hComm, buf, howMuchBytes, &readBytes, NULL); или WriteFile(hComm, buf, howMuchBytes, &writtenBytes, NULL); - приемаш или изпращаш howMuchBytes
Всичко до тук е преносимо (WIN32 API), т.е. върви по един същ начин и под Win95, и под WinXP.
p.s.
msdn.microsoft.com, search ReadFile
Re: COM port под NT/XP
Да това е най-добрия начин стига да работиш с WIN API, аз не разбирам, а и нямам желание, все пак правя хардуер, а за нещата които ми се налага да пиша готовите модули си ми вършат работа :)
Re: COM port под NT/XP
Ами тогава си ползваш готовите компоненти за целта! Има за серийни, паралелни и др. портове, вкл. и безплатни със сорс. А пък ако някой има конкретни проблеми или въпроси, свързани с Delphi, нека пита в едноименния клуб! 
Mixy
Mixy
Re: COM port под NT/XP
Само едно уточнение: AsyncPro на TurboPower вече повече от половин година е OpenSource и може да се изтегли от SourceForge. Така че нямаш проблеми по този параграф.
Re: COM port под NT/XP
Мисля, не съм чел достатъчно за защитени режими на НТ.
Там не моеш туку така да пишеш в паметта. То и в 9х има
дривер за ком порта ама нейсе, по-лесно е. Утре качвам Делфи на ХР и
пробвам да отворя порта, ако не стане ставм хижар в Родопите.
И понеже нямам регистация в кубовете, пиша моето мото така:
Номинирам Ники Пънчев да напусне ПикПрадър
Там не моеш туку така да пишеш в паметта. То и в 9х има
дривер за ком порта ама нейсе, по-лесно е. Утре качвам Делфи на ХР и
пробвам да отворя порта, ако не стане ставм хижар в Родопите.
И понеже нямам регистация в кубовете, пиша моето мото така:
Номинирам Ники Пънчев да напусне ПикПрадър
Re: COM port под NT/XP
Защитения режим не те бърка, нито драйвери ти трябват. COM порта се отваря с CreateFile като файл и оттам на татък четенето и записа в него (с ReadFile и WriteFile) са безпроблемни и абсолютно еднакви за кой да е Windows от 95 нагоре. Виж също и GetCommState, SetCommState и SetCommTimeouts в MSDN или Win32 SDK хелпа на Delphi. А най-добре си дръпни някой готов компонент за целта, който ще те освободи от директна работа с API функциите.
P.S. Пример за отваряне:
FHandle:=CreateFile(PChar('COM1'), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
Mixy
P.S. Пример за отваряне:
FHandle:=CreateFile(PChar('COM1'), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
Mixy