Hej. <b>genererar ett fel om man slår in ett portnummer som inte finns,</b> Hej, och tack för visat intresse. När du säger serieportar, syftar du på typ Com 1, Com 2 osv? Det verkar konstigt att låta programmet välja en ledig port, du ska väl använda den port som saken du ska ansluta till är inkopplad på? I C++ (unmanaged) så använder jag CreateFile med filnamnet "\\.\COMn" där n bytas ut mot port som ska testas. Med ledning av Rubens utmärkta svar hittade jag detta: http://vbnet.mvps.org/index.html?code/system/comtestapi.htm Tack för visat intresse. Ska sätta mej och testa några av förslagen under veckan. Tack för visat intresse. Ska sätta mej och testa några av förslagen under veckan. Hej. jag kanske uttryckte mej lite luddigt. Det jag vill är att man som användare ska kunna välja från en lista med dom portar som de facto finns installerade på datorn. Så som programmet ser ut idag, så kan man slå in vilket heltal som helst. Hej Sofia. Tack för ditt intresse. Tvärtom. Jag har en c# version på g, och där kommer säkert ditt tips väl till pass.Serieportar i VB6
Någon som har ngn. smart idé om hur man kan kontrollera att ett visst portnummer verkligen existerar? VB genererar ett fel om man slår in ett portnummer som inte finns, men jag skulle föredra att den kollen gjordes innan man ens försökte öppna porten.
mvh HåkanSv: Serieportar i VB6
mmm... var slår du in. Det första jag tänker på att ta hand om Error handlern så att du får ex en MsgBox
som talar om vilka som finns.
Kör en For Loop som visar i en ListBox vilka som finns.Sv:Serieportar i VB6
Det jag är ute efter är ngt i stil med när man öppnar en fil med hjälp av funktionn FreeFile. Dvs. jag får av os reda på vilka portar som är tillgängliga på datorn. Om jag inte minns helt fel, så finns det ngt. sådant i .net miljön (vilket ju inte hjälper mej särledes mycket).
Errorhandlern verkar ju veta vilka portar som finns, och även om dom är öppna. Så informationen måste ju gå att få tag i någonstans tycker man.
Ditt förslag om en forloop är utmärkt, men att på 'chans' öppna portar för att generera fel låter inte helt rätt tycker jag.Sv: Serieportar i VB6
/ThomasSv:Serieportar i VB6
CreateFile returnerar en HANDLE. Om denna är INVALID_HANDLE_VALUE så kan porten inte öppnas. Isåfall kollar jag GetLastError() och om det inte är ERROR_FILE_NOT found så betyder det att porten finns men är allokerad av någon annan.
Ser ut så här i C++
CString s;
s.Format(_T("\\\\.\\COM%d"),iCom);
HANDLE f=CreateFile(
s, // Name
GENERIC_READ | GENERIC_WRITE, // Desired access
0, // Share mode
NULL, // pointer to Security attributes struct
OPEN_EXISTING, // Creation disposition
FILE_ATTRIBUTE_NORMAL, // Flags and attributes
NULL); // Template file handle
DWORD dwLastError=GetLastError();
BOOL ret;
BOOL allocated=FALSE;
if (f==INVALID_HANDLE_VALUE){
ret=FALSE;
if (dwLastError!=ERROR_FILE_NOT_FOUND){
allocated=TRUE; // Port exists but is opened by another
} else {
ret=TRUE;
CloseHandle(f);
}
ret är FALSE om porten inte går att öppna
allocated är TRUE om porten finns men är upptagen
Sorry - inte VB men det går väl att översätta.
/RubenSv: Serieportar i VB6
Sv:Serieportar i VB6
mvh
HåkanSv:Serieportar i VB6
mvh
HåkanSv: Serieportar i VB6
Självklart så är alla serieprotarna kopplade till diverse olika 'devices'. Men att från listan välja rätt port till rätt anslutning kommer jag att överlåta till användaren själv.
mvh
HåkanSv:Serieportar i VB6
Jag är inte helt säker, men tror att din lösning är till för .net miljön. Dvs inte för VB6. Rätta mej gärna om jag har fel.
mvh
HåkanSv:Serieportar i VB6
Ha det bra
Håkan