Community
cancel
Showing results for 
Search instead for 
Did you mean: 
sstev15
Beginner
1,928 Views

DE3815TYBE serial com port

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?

0 Kudos
10 Replies
idata
Community Manager
142 Views

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 https://downloadcenter.intel.com/product/91600/Intel-System-Support-Utility

 

 

Latest BIOS and drivers:

 

https://downloadcenter.intel.com/product/78576/Intel-NUC-Board-DE3815TYBE https://downloadcenter.intel.com/product/78576/Intel-NUC-Board-DE3815TYBE

 

 

Regards,

 

Mike C
sstev15
Beginner
142 Views

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

sstev15
Beginner
142 Views

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

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 );

}

idata
Community Manager
142 Views

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
sstev15
Beginner
142 Views

Do you want to buy two NUCs - cheap?

idata
Community Manager
142 Views

Hi,

 

 

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

 

 

Mike C

 

sstev15
Beginner
142 Views

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

idata
Community Manager
142 Views

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 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
pcova
Beginner
142 Views

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

idata
Community Manager
142 Views

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
Reply