Hello
I want to send something trough IR port to a printer but I have a
problem ....  Just take a look please.... 

I have a class "Cir"

/*************************************************************/
bool CIr::Open(int nSpeed, int nTimeOut)
{
        UInt32 valueP;
        UInt16 valueLenP;
        
        m_nPortID = 0;
        m_nTimeOut = nTimeOut;

        Err nError = 0;

        if( !CPalmApp::IsVisor() )
        {
                FrmCustomAlert(CustomErrorAlert, "No Visor", NULL,
NULL);  
                nError = SrmOpen(/*sysFileCVirtIrComm*/  serPortIrPort,
nSpeed, &m_nPortID); 
        }
        else
        {
                HsExtKeyboardEnable( false );
                nError = SrmOpen(serPortCradlePort, nSpeed, &m_nPortID);

        }

        if( nError )
        {
                FrmCustomAlert(CustomErrorAlert, "ERROR", NULL, NULL);  
                m_nPortID = 0;
                if( serErrAlreadyOpen == nError )
                {
                        nError = Close();
                        if( nError==serErrStillOpen)
                        {
                                FrmCustomAlert(CustomErrorAlert, "Serial
port open by other application!\nReset the device!", NULL, NULL);
                                return false;
                        }

                        if( !CPalmApp::IsVisor() )
                        {
                                nError = SrmOpen(serPortIrPort, nSpeed,
&m_nPortID); 
                        }
                        else
                        {
                                HsExtKeyboardEnable( false );
                                nError = SrmOpen(serPortCradlePort,
nSpeed, &m_nPortID); 
                        }

                        if( nError )
                        {
                                m_nPortID = 0;
                                FrmCustomAlert(CustomErrorAlert, "Serial
port already open ", NULL, NULL);       
                                return(false);
                        }
                }
                else
                {
                        FrmCustomAlert(CustomErrorAlert, "Cannot open
the serial port", NULL, NULL);  
                        return(false);
                }
        }
        else
        {
                valueLenP = sizeof(UInt32);
                valueP = srmSettingsFlagStopBits1 &
srmSettingsFlagBitsPerChar8; 
                nError = SrmControl(m_nPortID,srmCtlSetFlags, (void
*)&valueP, &valueLenP); 
                
                if (nError == serErrBadPort) 
                {
                        FrmCustomAlert(CustomErrorAlert, "This port
doesn't exist", NULL, NULL);                            
                }
                if (nError == serErrBadParam ) 
                {
                        FrmCustomAlert(CustomErrorAlert, "An invalid op
code was specified", NULL, NULL);                               
                }
                if (nError == serErrNotOpen  ) 
                {
                        FrmCustomAlert(CustomErrorAlert, "The serial
port is not open. ", NULL, NULL);                               
                }
                if (nError == serErrNoDevicesAvail) 
                {
                        FrmCustomAlert(CustomErrorAlert, "No serial
devices could be found.", NULL, NULL);                          
                }
                if (nError == serErrNotSupported ) 
                {
                        FrmCustomAlert(CustomErrorAlert, "The specified
op code is not supported in the current configuration", NULL, NULL);

                }
                if (!nError)
                {
                        FrmCustomAlert(CustomErrorAlert, "OK
srmCtlSetFlags", NULL, NULL);                           
                }

        }       
        return(true);
}

/*************************************************************/

//
// Close() : close the port if it's opened
//
int CIr::Close()
{
        Err error = 0;
        if (0 != m_nPortID)
        {
                error = SrmClose(m_nPortID);
                m_nPortID = 0;
        }

    return error;
}

/*************************************************************/

//
// Write()      : writes nLength bytes on the serial port
//                      : returns the number of bytes that was actually
written or -1
//
int CIr::Write(char* pData, int nLength)
{
        TRACE("%s", pData);
        
        Err nError;
    int nBytesSent;
    
        nBytesSent = SrmSend(m_nPortID, (void*)pData, nLength, &nError);
        
        if(nError==0)
                return nBytesSent;
        else
        {
                return -1;
        }
}

/*************************************************************/


And  a  simple  form whith a button: (Cir  m_serial)


/*************************************************************/
bool CMain::OnP1Button()
{
    m_serial.Open(9600, 60);
        
    char szSmallFonts[] = {0x1B, 0x0F, 0};

    m_serial.Write( szSmallFonts, strlen(szSmallFonts));

        char szHighSpeedDraft[4] = {0x1B,0x73,0x30,0};

        m_serial.Write( szSmallFonts, strlen(szHighSpeedDraft));
        
        CString szPrinterLine =
"28356349027623498582582346589723456234856823465823450834657893468562348
5689238974365893489";

        long lb = m_serial.Write( (char*)szPrinterLine,
szPrinterLine.GetLength() );

        if (lb==-1)
        {
                MSG_INFO("NOTHING");
        }
        else
        {
                char szbuff[100];
                strcpy(szbuff, "bytes: ");
                strcat(szbuff, ftoa(lb,false,0));
                MSG_INFO(szbuff);
        }
                
        while(m_serial.CheckSendBuffer()!=0){}
        
        m_serial.Close();       
        return true;
}


What is wrong?

Thanck's in advance


--
For information on using the Palm Developer Forums, or to unsubscribe, please see 
http://www.palmos.com/dev/support/forums/

Reply via email to