COM port под NT/XP

10 отговора 444 прегледа
#1

COM port под NT/XP

Обърках клуба...
Питах в програмисти как се отваря порт в WinNt/XP.
Както винаги те ме пратиха в 5 глуха по линията Цюрих-Мюнхен.
После се сетих, "че кой по добре от електончиците отваря портове"...
няма такъв.

Та пробелма ми е следния имам програмка писна на Паскал за Делфи.
Тя отваря COM порта на компютера после пише и чете в него без проблеми
под Win9x, НО ! под XP не може да отвори порта. (ползвам един VCL,
писан яко на асемблер).

1. Има ли начин без да бъркам в кода да я подкарам и под XP?
2. Понеже контролката е много готина и скъпа: АsyncPro на Turbo Power,
мисля си дали ако я компилирам под XP, ще си включи необходимите
директиви и няма да си тръгне безпроблемно?

Отговор
в отговор на DosOvski #2

Re: COM port под NT/XP

Ами значи аз имам модул, SynC32а също и още един, не с есещам, а ако ползваш делфи .... даже имам два които работят под ХР, не му разбирам много на винбоз, но за хардуера който правя ми се налага да понаписвам по нещо, та тва работи. Другия вариант е DOS, там дори и под XP емулацията ти позволява да отваряш портовете.

Отговор
в отговор на DosOvski #3

Re: COM port под NT/XP

Не съм бачкал на делфи, но знам, че може да използва OCX-ите на ВБ. Та аддни му един MSCOMM контрол от ВБ6 примерно и действай с него - би трябвало да стане. Аз съм правил за един разработчик на делфи OCX в който се съдържаше този контрол (е, вършеха се и др. работи) и си работеше без проблем в делфито моя OCX написан и компилиран на ВБ.

......
А в 33 - распяли, но не сильно.
.......
Отговор
в отговор на Poruchik_Rzevski #4

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.

Отговор
в отговор на DosOvski #5

Re: COM port под NT/XP

Аз също работя на Делфи. 4 и 5
за XP ползвам безплатен компонент VssComm32 и си работи. Тествал съм го на NT,95,98,2000,XP и сие. Пусни едно тъсене и си го изтегли.

Отговор
в отговор на DosOvski #6

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

Отговор
в отговор на tRex #7

Re: COM port под NT/XP

Да това е най-добрия начин стига да работиш с WIN API, аз не разбирам, а и нямам желание, все пак правя хардуер, а за нещата които ми се налага да пиша готовите модули си ми вършат работа :)

Отговор
в отговор на ToHu #8

Re: COM port под NT/XP

Ами тогава си ползваш готовите компоненти за целта! Има за серийни, паралелни и др. портове, вкл. и безплатни със сорс. А пък ако някой има конкретни проблеми или въпроси, свързани с Delphi, нека пита в едноименния клуб!

Mixy
Отговор
в отговор на DosOvski #9

Re: COM port под NT/XP

Само едно уточнение: AsyncPro на TurboPower вече повече от половин година е OpenSource и може да се изтегли от SourceForge. Така че нямаш проблеми по този параграф.

Отговор
в отговор на DosOvski #10

Re: COM port под NT/XP

Мисля, не съм чел достатъчно за защитени режими на НТ.
Там не моеш туку така да пишеш в паметта. То и в 9х има
дривер за ком порта ама нейсе, по-лесно е. Утре качвам Делфи на ХР и
пробвам да отворя порта, ако не стане ставм хижар в Родопите.



И понеже нямам регистация в кубовете, пиша моето мото така:

Номинирам Ники Пънчев да напусне ПикПрадър

Отговор
в отговор на DosOffSkъ #11

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
Отговор