10 Replies Latest reply on Jun 28, 2016 3:32 PM by Intel Corporation

    DE3815TYBE  serial com port

    cybersteve

      I plan to use BLKDE3815TYBE in a product that requires one serial com port. My code runs in other Atom single board computers, but BLKDE3815TYBE fails to 'receive' data on either com port (com3, com4). It can transmit OK, but not receive. Is this a known fault? Is there a fix?

        • 1. Re: DE3815TYBE  serial com port
          Intel Corporation
          This message was posted by Intel Corporation on behalf of

          Hi cybersteve,
           
          The NUC has an internal Serial port header on the backside of the board, now we don’t have any issue reported yet with the serial port. For replication purposes I would need to collect your system configuration, OS and software that you are using.
           
          If you are using any Windows OS, please download and run our Intel® System Support Utility and send me the results.
          https://downloadcenter.intel.com/product/91600/Intel-System-Support-Utility
           
          Latest BIOS and drivers:
          https://downloadcenter.intel.com/product/78576/Intel-NUC-Board-DE3815TYBE
           
          Regards,
          Mike C

          • 2. Re: DE3815TYBE  serial com port
            cybersteve

            will do as you suggest in the morning - getting a little late here in the UK:)

             

            Yes, I have connected to the serial header you mention.

             

            I use Windows Embedded 7 standard, but get the same issue with Windows 7

             

            My code, which you will get tomorrow, works on a Qseven and the IB897

             

            Meanwhile, can you tell me if this document has any relevance to the problems I am getting ..quote.."no fix..."

             

            http://www.intel.com/content/dam/support/us/en/documents/boardsandkits/DE3815TYBE_SpecUpdate01.pdf

             

            Thanks for your interest in my problem

            • 3. Re: DE3815TYBE  serial com port
              cybersteve

              Mike

               

              I had already uses the latest IO drivers you recommended.

               

              I have not updated the Bios.

               

              This is the comms code that I use successfully on other devices...

               

              //this works,,,

              myserial.SendData(buffer,195);

              //this always returns 0

              ret  = myserial.ReadData(buffer,1000);

               

               

               

              CSerial::CSerial()

              {

               

               

                memset( &m_OverlappedRead, 0, sizeof( OVERLAPPED ) );

                memset( &m_OverlappedWrite, 0, sizeof( OVERLAPPED ) );

                m_hIDComDev = NULL;

                m_bOpened = FALSE;

               

               

              }

               

               

              CSerial::~CSerial()

              {

               

               

                Close();

               

               

              }

               

               

              BOOL CSerial::Open( int nPort, int nBaud )

              {

               

               

                if( m_bOpened ) return( TRUE );

               

               

                char szPort[15];

                char szComParams[50];

                DCB dcb;

               

               

                szPort[0]='C';

                szPort[1]='O';

                szPort[2]='M';

                szPort[3]='3';// or whatever

                szPort[4]=0;

               

               

               

               

                //wsprintf( szPort, "COM%d", nPort );

                //printf(szPort, "COM%d", nPort );

                //printf("BVTSonar_Create: failed\n");

                m_hIDComDev = CreateFile( szPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL |

               

               

              FILE_FLAG_OVERLAPPED, NULL );

                if( m_hIDComDev == NULL ) return( FALSE );

               

               

                memset( &m_OverlappedRead, 0, sizeof( OVERLAPPED ) );

                memset( &m_OverlappedWrite, 0, sizeof( OVERLAPPED ) );

               

               

                COMMTIMEOUTS CommTimeOuts;

                CommTimeOuts.ReadIntervalTimeout = 0xFFFFFFFF;

                CommTimeOuts.ReadTotalTimeoutMultiplier = 0;

                CommTimeOuts.ReadTotalTimeoutConstant = 0;

                CommTimeOuts.WriteTotalTimeoutMultiplier = 0;

                CommTimeOuts.WriteTotalTimeoutConstant = 5000;

                SetCommTimeouts( m_hIDComDev, &CommTimeOuts );

               

               

                //wsprintf( szComParams, "COM%d:%d,n,8,1", nPort, nBaud );

               

               

                m_OverlappedRead.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL );

                m_OverlappedWrite.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL );

               

               

                dcb.DCBlength = sizeof( DCB );

                GetCommState( m_hIDComDev, &dcb );

                dcb.BaudRate = nBaud;

                dcb.ByteSize = 8;

                unsigned char ucSet;

                ucSet = (unsigned char) ( ( FC_RTSCTS & FC_DTRDSR ) != 0 );

                ucSet = (unsigned char) ( ( FC_RTSCTS & FC_RTSCTS ) != 0 );

                ucSet = (unsigned char) ( ( FC_RTSCTS & FC_XONXOFF ) != 0 );

                if( !SetCommState( m_hIDComDev, &dcb ) ||

                !SetupComm( m_hIDComDev, 10000, 10000 ) ||

                m_OverlappedRead.hEvent == NULL ||

                m_OverlappedWrite.hEvent == NULL ){

                DWORD dwError = GetLastError();

                if( m_OverlappedRead.hEvent != NULL ) CloseHandle( m_OverlappedRead.hEvent );

                if( m_OverlappedWrite.hEvent != NULL ) CloseHandle( m_OverlappedWrite.hEvent );

                CloseHandle( m_hIDComDev );

                return( FALSE );

                }

               

               

                m_bOpened = TRUE;

               

               

                return( m_bOpened );

               

               

              }

               

               

              BOOL CSerial::Close( void )

              {

               

               

                if( !m_bOpened || m_hIDComDev == NULL ) return( TRUE );

               

               

                if( m_OverlappedRead.hEvent != NULL ) CloseHandle( m_OverlappedRead.hEvent );

                if( m_OverlappedWrite.hEvent != NULL ) CloseHandle( m_OverlappedWrite.hEvent );

                CloseHandle( m_hIDComDev );

                m_bOpened = FALSE;

                m_hIDComDev = NULL;

               

               

                return( TRUE );

               

               

              }

               

               

              BOOL CSerial::WriteCommByte( unsigned char ucByte )

              {

                BOOL bWriteStat;

                DWORD dwBytesWritten;

               

               

                bWriteStat = WriteFile( m_hIDComDev, (LPSTR) &ucByte, 1, &dwBytesWritten, &m_OverlappedWrite );

                if( !bWriteStat && ( GetLastError() == ERROR_IO_PENDING ) ){

                if( WaitForSingleObject( m_OverlappedWrite.hEvent, 1000 ) ) dwBytesWritten = 0;

                else{

                GetOverlappedResult( m_hIDComDev, &m_OverlappedWrite, &dwBytesWritten, FALSE );

                m_OverlappedWrite.Offset += dwBytesWritten;

                }

                }

               

               

                return( TRUE );

               

               

              }

               

               

              int CSerial::SendData( unsigned char *buffer, int size )//const

              {

               

               

                if( !m_bOpened || m_hIDComDev == NULL ) return( 0 );

               

               

                DWORD dwBytesWritten = 0;

                int i;

                for( i=0; i<size; i++ ){

                WriteCommByte( buffer[i] );

                dwBytesWritten++;

                }

               

               

                return( (int) dwBytesWritten );

               

               

              }

               

               

              int CSerial::ReadDataWaiting( void )

              {

               

               

                if( !m_bOpened || m_hIDComDev == NULL ) return( 0 );

               

               

                DWORD dwErrorFlags;

                COMSTAT ComStat;

               

               

                ClearCommError( m_hIDComDev, &dwErrorFlags, &ComStat );

               

               

                return( (int) ComStat.cbInQue );

               

               

              }

               

               

              int CSerial::ReadData( void *buffer, int limit )

              {

               

               

                if( !m_bOpened || m_hIDComDev == NULL ) return( 0 );

               

               

                BOOL bReadStatus;

                DWORD dwBytesRead, dwErrorFlags;

                COMSTAT ComStat;

               

               

                ClearCommError( m_hIDComDev, &dwErrorFlags, &ComStat );

                if( !ComStat.cbInQue ) return( 0 );

               

               

                dwBytesRead = (DWORD) ComStat.cbInQue;

                if( limit < (int) dwBytesRead ) dwBytesRead = (DWORD) limit;

               

               

                bReadStatus = ReadFile( m_hIDComDev, buffer, dwBytesRead, &dwBytesRead, &m_OverlappedRead );

                if( !bReadStatus ){

                if( GetLastError() == ERROR_IO_PENDING ){

                WaitForSingleObject( m_OverlappedRead.hEvent, 2000 );

                return( (int) dwBytesRead );

                }

                return( 0 );

                }

               

               

                return( (int) dwBytesRead );

               

               

              }

              • 4. Re: DE3815TYBE  serial com port
                Intel Corporation
                This message was posted by Intel Corporation on behalf of

                Hi cybersteve,
                 
                I have confirmed the serial port features with my upper level and your issue is expected. The document Intel® NUC Board DE3815TYBE Specification Update (PDF) provided by you gives the specs of the ports.
                 
                I regret for the inconvenience.
                 
                Mike C

                • 5. Re: DE3815TYBE  serial com port
                  cybersteve

                  Do you want to buy two NUCs - cheap?

                  • 6. Re: DE3815TYBE  serial com port
                    Intel Corporation
                    This message was posted by Intel Corporation on behalf of

                    Hi,
                     
                    I understand your frustration; maybe if you recently bought them your place of purchase might exchange it.
                     
                    Mike C
                     

                    • 7. Re: DE3815TYBE  serial com port
                      cybersteve

                      Hi

                       

                      I'll give that a go - though I don't know how I can recoup the wasted man hours on this project.

                       

                      Can you confirm that the documentation misrepresents the product?

                       

                      Can you confirm you will be changing you product spec and informing all suppliers to do likewise?

                       

                      best regards

                       

                       

                      cybersteve

                      • 8. Re: DE3815TYBE  serial com port
                        Intel Corporation
                        This message was posted by Intel Corporation on behalf of

                        Hi cybersteve,
                         
                        I confirmed the DE3815TYBE Specification Update, October 14 PDF was the latest official document posted. On page 5 you will see the port limitation.
                        http://www.intel.com/content/dam/support/us/en/documents/boardsandkits/DE3815TYBE_SpecUpdate01.pdf
                         
                        Intel already stopped producing the NUC model DE3815TYBE; however, I have sent your concern to my upper level. They will review if suppliers are already informed about the limitation.
                         
                        Regards,
                        Mike C

                        • 9. Re: DE3815TYBE  serial com port
                          RzR

                          If production stopped there are few chances that we will get fixed VisualBios upgrades , are they

                          ?

                           

                           

                          For the record :

                           

                          Title

                          : Limited capabilities of the serial ports header on the DE3815TYBE.

                          Problem

                          : The serial ports are not RS232 compliant.

                          Implication

                          : The DE3815TYBE serial ports will only support PC

                          -to-

                          PC

                          communication usin

                          g a cross-over cable

                          in Microsoft Windows

                          * 7. Microsoft

                          Windows 8 and 8.1 drivers enumerate the controller, but do not open a com

                          port to the controller. 

                          Linux* drivers are not provided for the I/O controller.

                          The limited design an

                          d driver implementatio

                          n will not support RS232 serial

                          devices.

                          Workaround

                          : Serial devices may be used with a USB

                          -to

                          -Serial converter.

                          Status

                          : No Fix

                          • 10. Re: DE3815TYBE  serial com port
                            Intel Corporation
                            This message was posted by Intel Corporation on behalf of

                            Hi RzR,
                             
                            Intel® NUC Kit DE3815TYBE has 3 years of warranty, so the support will continue for a while. Intel released a new BIOS two months ago as an example.
                             
                            Regards,
                            Mike C