NT-ДОСТЪП ДО ПОРТОВЕ

15 отговора 671 прегледа
#1

NT-ДОСТЪП ДО ПОРТОВЕ

A БЕ ХОРА, КАК СЕ ОТВАРЯ СЕРИЕН ПОРТ ПОД WINDOS_NT

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

Re: NT-ДОСТЪП ДО ПОРТОВЕ

Много ясно как - с отварячката за портове.



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

Re: NT-ДОСТЪП ДО ПОРТОВЕ

Един от вариантите е да си напишеш driver. Друг е да ползваш вече написан (Например виж тук: [линк] )

...and there shall be no more death,neither sorrow...for the former things are passed away
Отговор
в отговор на DOSOVSKl #4

Re: NT-ДОСТЪП ДО ПОРТОВЕ

CreateFile()

Отговор
в отговор на Cизиф #5

Малко по разширено


int ComPort::OpenComPort(char*ComName,int Sp,int Prot)
{
COMMCONFIG *pComCfg;
Speed=Sp;
Protocol=Prot;
BYTE bComCfg[1024];
COMMTIMEOUTS CommTimeOuts;
hCom=CreateFile( ComName, GENERIC_READ | GENERIC_WRITE,NULL,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL );
if(hCom==INVALID_HANDLE_VALUE){
return -1;}
pComCfg=(COMMCONFIG*)bComCfg;
pComCfg->dcb.DCBlength=sizeof(DCB);
pComCfg->dwSize=sizeof(bComCfg);
GetCommState(hCom,&pComCfg->dcb);

if(!Speed){//User will directly setup COM port
if(!CommConfigDialog(ComName,Parent,pComCfg))
{
if(hCom)
CloseHandle(hCom);
hCom=0;
return -2;}
if(pComCfg->dcb.fRtsControl==2)Protocol=ptHard;
else if(pComCfg->dcb.fOutX)Protocol=ptSoft;
else Protocol=ptNone;
}
else{//8 bits, no parity, 1 stop bit - only different protocols

pComCfg->dcb.DCBlength = 28;
pComCfg->dcb.BaudRate = Speed;
pComCfg->dcb.fBinary = 1 ;
pComCfg->dcb.fParity = 0 ;
pComCfg->dcb.fDtrControl = 1 ;
pComCfg->dcb.fOutxDsrFlow = 0 ;
pComCfg->dcb.fDsrSensitivity = 0 ;
pComCfg->dcb.fTXContinueOnXoff= 0 ;

SetDCBProtocol(&pComCfg->dcb,Protocol);//Difference according to different protocols

pComCfg->dcb.fErrorChar = 0 ;
pComCfg->dcb.fNull = 0 ;
pComCfg->dcb.fAbortOnError = 0 ;
pComCfg->dcb.fDummy2 = 0 ;
pComCfg->dcb.XonLim = 2048 ;
pComCfg->dcb.XoffLim = 512 ;
pComCfg->dcb.ByteSize = '\x08';
pComCfg->dcb.Parity = '\0' ;
pComCfg->dcb.StopBits = '\0' ;
pComCfg->dcb.XonChar = '\x11' ;
pComCfg->dcb.XoffChar = '\x13';
pComCfg->dcb.ErrorChar = '\0' ;
pComCfg->dcb.EofChar = '\0' ;
pComCfg->dcb.EvtChar = '\0';
pComCfg->dcb.wReserved1 = 0 ;
}
ShowDCB(pComCfg->dcb);
GetLastError();
if(!SetCommState(hCom,&pComCfg->dcb))
return -3;
CommTimeOuts.ReadIntervalTimeout = 1;
CommTimeOuts.ReadTotalTimeoutMultiplier =4*CBR_115200/pComCfg->dcb.BaudRate;
CommTimeOuts.ReadTotalTimeoutConstant = 1;
CommTimeOuts.WriteTotalTimeoutMultiplier = 4*CBR_115200/pComCfg->dcb.BaudRate;
CommTimeOuts.WriteTotalTimeoutConstant = 1;
if(!SetCommTimeouts(hCom,&CommTimeOuts))
return -4;
SetupComm(hCom,2048,2048);
IsRunning=1;
return 0;//Succsess
}



Bеer? Mоre?
Плацебото
Отговор
в отговор на bira_more #6

Re: Малко по разширено

... така .
Аз код не разбирам ( т. е. пиша всичко на делфи )
Писах едно нещо на делфи 5, с виндоус98СЕ, ( такъв ми лаптопа
не иска друго освен 98 ) . На 98 си отварям порта и си прая к'вто си
искам. Добре ама неисе, си купих и домашен къмпютер.
Та това което го писах за 98 не работи на хикспи ... Там било си
нещо защитено...
Както в повечето форуми и тук най-полезния съвет който дават е
"питаи некой си Гугала" ...

Та намирам го тоя пич и го питам:
NT access serial port ? отговор окло 240 хил. резултата
WindowXP open COM1 ..... отговор окло 241 хил. резултата

Абе маи и тоя Гугала е програмис колкото мен ...

Та питам Ви:

Как да направя така, че без да пиша в кода :
иф дифаин вин35 тхен на бабати майка и
иф дифаин вин36 ... на маикати бабаи
.......

да отворя порта де?




ендиф
ендиф

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

Re: Малко по разширено

оди питай Гугала за Varian Async32

Am I evil?
Yes I am.

Редактирано от Hateras на

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

Е ти ме утепа

Какво означават двете твърдения заедно? Аз код не разбирам и пиша всичко на делфи?
Делфи - такъв език няма. Има паскал. Има и ИДЕ на Борланд за Паскал което се нарича делфи.
Ако не можеш да разбереш какво означават и какво правят следните няколко реда - толкова по зле за теб.


COMMCONFIG *pComCfg;
BYTE bComCfg[1024];
COMMTIMEOUTS CommTimeOuts;
HANDLE hCom=CreateFile( "COM1", GENERIC_READ |
GENERIC_WRITE,NULL,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL );

if(hCom==INVALID_HANDLE_VALUE) return -1;
pComCfg=(COMMCONFIG*)bComCfg;
pComCfg->dcb.DCBlength=sizeof(DCB);
pComCfg->dwSize=sizeof(bComCfg);
GetCommState(hCom,&pComCfg->dcb);
CommConfigDialog(ComName,Parent,pComCfg);


След което имаш
hCom

И ако искаш да пишеш:
DWORD G;
WriteFile(hCom,pBufW,BytesToWrite,&G,NULL);
И ако искаш да четеш
ReadFile(hCom,pBufR,1,&G,NULL);


А за подробности имаш и едно нещо дето му се вика Help.

И това дето ти го показвам бачка на всякакъв 32 битов Виндовс.
А как да си го препишеш на паскал - нямам идея.

Bеer? Mоre?
Плацебото
Отговор
в отговор на DOSOVSKl #9

Re: NT-ДОСТЪП ДО ПОРТОВЕ

Можеш да пробваш и TCiaComPort от [линк]
Работи си под Windows XP , има и сорса му , така че ако нещо не ти харесва можеш да си го модифицираш

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

Re: Малко по разширено

bira_more, тук, когато поствате сорс код, какво правите, за да се запази той структуриран?

Благодаря!

void main() { main(); }
Отговор
в отговор на DOSOVSKl #11

Re: Малко по разширено

Хихихи... ма то е хубаво от време на време и да се поразбира (аз също пиша на Delphi).
За мързели като теб може да е подходящо да ползваш ActiveX контролата на М$.
В Delphi средата отиваш на Component/Import ActiveX Control, от списъка избери Microsoft Comm Control 6.0 например и давай мъжествено натам. Ще ти се покаже една красива картинка на телефонче в ActiveX страницата от палитрата с компоненти. И успешно мишкодевелопене...

Отговор
в отговор на Пиpoтexниk #12

Tag

Tag-ът е [ pre ] <код> [ /pre ] и се предполага да работи като едноименния HTML tag, но за съжаление е бъгав - след затварянето му текстът продължава да не се пренася на нов ред.

Решението е или да си слагаш сам новите редове, или последното което постваш да е кода.
Освен това можеш да добавяш интервали вътре в tag-овете и така ги правиш обикновен текст.


System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
Отговор
в отговор на Colombino #13

Re: Tag

... ползвам Async Professional на [линк]
... порта не може да се отвори все едно, че някой го е отворил преди мен.
... четох за нек'ви драивери или плъгини, но нищо не разбрах.
Имам и една готова програмка за дистанционо и тя не работи под НТ.

Т. Е. ОС НЕ МИ ДАВА ДОСТЪП ДО ПОРТА . ЗАЩО ?

Отговор
в отговор на DOSOVSKl #14

Re: NT-ДОСТЪП ДО ПОРТОВЕ

Procheti tova:
[линк]

Procheti tova:
[линк]

Отговор
в отговор на Пиpoтexниk #15

Ми четем бре :)))

Имало и тук даже дори нещо наречено тагове - добре описани във въпроси и помощ и други места :)))
Така де от гор висят разни неща - цъкни там и виж.
Щото и мен ме мързи та:
[ b ]
[ / b ]
нещо отсорта ама ако му съобразиш скобите и другите неща вместо b например pre или нещо такова...

Bеer? Mоre?
Плацебото
Отговор
в отговор на DOSovski #16

Re: Tag

Пробвай с HyperTerminal бре....

Bеer? Mоre?
Плацебото
Отговор