Avatar billede _et Praktikant
22. april 2008 - 08:44 Der er 9 kommentarer og
1 løsning

Test om comport er ibrug.

Jeg har et gammelt stykke sw som er skrevet i VC++ 6.0.

Det bruger serial kommunikation.
Problemet er at hvis man har comporte(på tlf) over bluetooth og telefonen er tilsluttet. tager det lang tid + telefonen kræver accept af om pc må tilslutte.

Dette er et problem og skal fjernes.
Der må ikke bruges bt porte.

Er der nogen der har et forslag til hvordan man løser dette.


Sådan gøres det idag.
Jeg syntes det virker lidt uheldigt at porten forsøges åbnet for at undersøge om den er optaget - kan det ikke gøres anderledes?
void CHardiExeUploadWinDlg::updateCombo()
{
    comboPtr = (CComboBox*) GetDlgItem( IDC_COMBO1);
    CString comport = "\\\\.\\com";
    CString nrString;
    char * nr = new char[];

    for (int i =1; i<MAX_COMPORT_NUMBER; i++)
    {
        itoa(i,nr,10);
        nrString = nr;

        //TEST AF COMPPORT:       
        HANDLE m_porthandle = CreateFile( comport+nrString, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
   
        if ( m_porthandle != INVALID_HANDLE_VALUE )
        {
           
            CloseHandle(m_porthandle);
            comboPtr->AddString("Com"+nrString);           
           
        }
    }
}
Avatar billede _et Praktikant
22. april 2008 - 08:45 #1
PS. Det er ikke et problem at bt porte findes - bare de IKKE åbnes/kontaktes
Avatar billede segmose Nybegynder
22. april 2008 - 10:58 #2
Hvad gør:

  char * nr = new char[];

???
Avatar billede _et Praktikant
22. april 2008 - 11:51 #3
Åbenbart intet.
Avatar billede _et Praktikant
22. april 2008 - 11:54 #4
Sludder. det er tælleren til den port der skal åbnes.
char * nr = new char[];
itoa(i,nr,10);
nrString = nr;
HANDLE m_porthandle = CreateFile( comport+nrString, GENERIC........
Avatar billede segmose Nybegynder
28. april 2008 - 09:08 #5
Der mangler altså noget i den linie, nemlig hvor stort array der er tale om, jeg ville tro at der skulle stå.

char * nr = new char[3]; // 2 ciffre og en \0
Avatar billede _et Praktikant
28. april 2008 - 09:44 #6
det er muligt men det virker :-)
Avatar billede segmose Nybegynder
28. april 2008 - 10:07 #7
Hehe endnu!

Men er et uheld der venter på at ske, da du ikke ved hvad du får tilbage fra din new, måske er det ok eller måske ikke. Måske ændre det sig i næste version eller patch da det er udefineret hvad der returneres.
Avatar billede _et Praktikant
03. maj 2008 - 23:24 #8
Uden at sætte noget på højkant, så ville jeg jo mene at der bliver allokeret ledig ram med new kommandoen, og hvad der har været på adressen før er ligemeget da variablen 'nr' bliver tilskrevet med tællervariablen 'i' i denne linje itoa(i,nr,10); før den bruges
Avatar billede _et Praktikant
03. maj 2008 - 23:25 #9
men et muligt problem er at jeg aldrig bruger delete på 'nr' så der er et muligt memory leak
Avatar billede _et Praktikant
24. juni 2008 - 12:00 #10
lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester