Avatar billede christian_h Nybegynder
01. september 2003 - 16:16 Der er 2 kommentarer og
1 løsning

Oversæt dette VB6 hvordan ?

Hej alle.

Hvordan får jeg oversat flg. til Visual Basic 6

CString strCommand;    //Binary command to be executed
char arCommand[16];  //Array for the command to be executed
DCB dcb;
OVERLAPPED ovWrite;
memset(&ovWrite,0,sizeof(ovWrite));

   
strCommand = "10101100010100110000000000000000";//PEForward
strcpy(arCommand,strCommand);

Håber nogle kan hjælpe
Avatar billede driis Nybegynder
01. september 2003 - 16:29 #1
Hvad skal koden helt nøjagtigt gøre ?
Avatar billede christian_h Nybegynder
01. september 2003 - 16:39 #2
Det er en del af en længere c++ kode som skal sætte nogle bit på comporten, bittene sætte i forhold til strCommand, hvis du kan/vil oversætte hele koden, vil jeg give 200 point for det.

Koden er en del af en ActiveX control, men skal "bare" være en Sub i VB

BOOL CAtmel2xCtrl::Erase()
{
    MessageBox("Erase Function");
    CString strCommand;    //Binary command to be executed
    char arCommand[16];    //Array to hold the command to be executed
    DCB dcb;
    OVERLAPPED ovWrite;
    memset(&ovWrite,0,sizeof(ovWrite));
    int nLength = 0;
   
    m_hCommPort = CreateFile("COM1",GENERIC_READ | GENERIC_WRITE,0,NULL,
        OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED |
        FILE_FLAG_NO_BUFFERING,NULL);
    if(m_hCommPort == INVALID_HANDLE_VALUE)
        MessageBox("Error creating port. HANDLE command.");
    memset(&dcb,0,sizeof(dcb));
    dcb.DCBlength=sizeof(dcb);

    if(!GetCommState(m_hCommPort,&dcb))
        TRACE("Unable to build comm port config = '%s', err = %d\n",
        (LPCTSTR)m_strBaud,GetLastError());
   
    strCommand = "10101100010100110000000000000000";    //PE Forward
    strcpy(arCommand,strCommand);
   
    EscapeCommFunction(m_hCommPort, CLRRTS);    //SCK = 0
       
    int d;
    for(d=0;d<=100000;d++)
        EscapeCommFunction(m_hCommPort, SETBREAK);
   
    //Change the state of DTR according to the command in the arCommand
    while (arCommand[nLength] != '\0')
    {   
        switch(arCommand[nLength])
        {
            case '0':
                {
                    EscapeCommFunction( m_hCommPort, CLRDTR);
                    EscapeCommFunction(m_hCommPort,SETRTS);
                    //MessageBox("CLRRTS");
                    for(d=0;d<=50000;d++);
                    EscapeCommFunction(m_hCommPort,CLRRTS);
                    for(d=0;d<=50000;d++);
                    break;
                }
            case '1':
                {
                    EscapeCommFunction( m_hCommPort, SETDTR);
                    EscapeCommFunction(m_hCommPort,SETRTS);
                    //MessageBox("SETRTS");
                    for(d=0;d<=50000;d++);
                    EscapeCommFunction(m_hCommPort,CLRRTS);
                    for(d=0;d<=50000;d++);
                    break;
                }
        }
        nLength++;
    }
    EscapeCommFunction(m_hCommPort, CLRRTS);    //SCK = 0
   
    for(d=0;d<=100000;d++)
        EscapeCommFunction(m_hCommPort, SETBREAK);
   
    strCommand = "10101100100000000000000000000000";    //Erase Forward
    strcpy(arCommand,strCommand);
    nLength = 0;

    //Change the state of DTR according to the command in the arCommand
    while (arCommand[nLength] != '\0')
    {   
        switch(arCommand[nLength])
        {
            case '0':
                {
                    EscapeCommFunction( m_hCommPort, CLRDTR);
                    EscapeCommFunction(m_hCommPort,SETRTS);
                    //MessageBox("CLRRTS");
                    for(d=0;d<=50000;d++);
                    EscapeCommFunction(m_hCommPort,CLRRTS);
                    for(d=0;d<=50000;d++);
                    break;
                }
            case '1':
                {
                    EscapeCommFunction( m_hCommPort, SETDTR);
                    EscapeCommFunction(m_hCommPort,SETRTS);
                    //MessageBox("SETRTS");
                    for(d=0;d<=50000;d++);
                    EscapeCommFunction(m_hCommPort,CLRRTS);
                    for(d=0;d<=50000;d++);
                    break;
                }
        }
        nLength++;
    }
   
    EscapeCommFunction(m_hCommPort, CLRRTS);    //SCK = 0
   
    for(d=0;d<=100000;d++)
        EscapeCommFunction(m_hCommPort, SETBREAK);
   
    strCommand = "10101100111001100000000000000000";    //Lock bits to 11
    strcpy(arCommand,strCommand);
    nLength = 0;

    //Change the state of DTR according to the command in the arCommand
    while (arCommand[nLength] != '\0')
    {   
        switch(arCommand[nLength])
        {
            case '0':
                {
                    EscapeCommFunction( m_hCommPort, CLRDTR);
                    EscapeCommFunction(m_hCommPort,SETRTS);
                    //MessageBox("CLRRTS");
                    for(d=0;d<=50000;d++);
                    EscapeCommFunction(m_hCommPort,CLRRTS);
                    for(d=0;d<=50000;d++);
                    break;
                }
            case '1':
                {
                    EscapeCommFunction( m_hCommPort, SETDTR);
                    EscapeCommFunction(m_hCommPort,SETRTS);
                    //MessageBox("SETRTS");
                    for(d=0;d<=50000;d++);
                    EscapeCommFunction(m_hCommPort,CLRRTS);
                    for(d=0;d<=50000;d++);
                    break;
                }
        }
        nLength++;
    }
   
    //EscapeCommFunction(m_hCommPort, CLRBREAK);
    CloseHandle(m_hCommPort);
    MessageBox("Unit loaded without errors.");
    return TRUE;
Avatar billede christian_h Nybegynder
07. september 2003 - 17:39 #3
Lukker
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