The Origin Forum
File Exchange
Try Origin for Free
The Origin Forum
Home | Profile | Register | Active Topics | Members | Search | FAQ | Send File to Tech support
 All Forums
 Origin Forum for Programming
 Forum for Origin C
 Data Acquisition

Note: You must be registered in order to post a reply.
To register, click here. Registration is FREE!

Screensize:
UserName:
Password:
Anti-Spam Code:
Format Mode:
Format: BoldItalicizedUnderlineStrikethrough Align LeftCenteredAlign Right Horizontal Rule Insert HyperlinkUpload FileInsert Image Insert CodeInsert QuoteInsert List
   
Message:

* HTML is OFF
* Forum Code is ON
Smilies
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Clown [:o)]
Black Eye [B)] Eight Ball [8] Frown [:(] Shy [8)]
Shocked [:0] Angry [:(!] Dead [xx(] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]

 
Check here to subscribe to this topic.
   

T O P I C    R E V I E W
superman1 Posted - 11/19/2002 : 06:17:56 AM
Hello,

I am trying to use the RS232 example program in Origin 7 Pro. Ti compiles OK, but how do I run it???

many thanks
Andrew

The program is as follows:




#include <origin.h> //Gernal header file
#include <mscomm.h> //Commication header file

#define BUFFER_BYTES 256

// Globle variable member
file ffComm; // the RS232 file object

// Function Prototypes go here.
BOOL rsr( int TimeoutRead = 5000 );
BOOL rsw( string str );
BOOL rsc();
BOOL rso( UINT nComm = 1 );

// static functions are not visible from labtalk
static BOOL SetDCB( UINT hCom, DWORD dwBaudRate, UINT nByteSize, UINT Parity, UINT StopBits );

// Function: rsr()
// rsr; default will read and dump to script window
BOOL rsr( int TimeoutRead )
{
if( !ffComm.IsOpen() )
{
printf("Please use rso[1,2] to open COM first.\n" );
return FALSE;
}

UINT hCom = ffComm.GetHandle();

if ( hCom == file::hFileNull )
{
ASSERT(FALSE);
return FALSE;
}

COMMTIMEOUTS tTimeout;
tTimeout.ReadIntervalTimeout = MAXWORD;
tTimeout.ReadTotalTimeoutMultiplier = 0;
tTimeout.ReadTotalTimeoutConstant = TimeoutRead; // pas de time out = 0
tTimeout.WriteTotalTimeoutMultiplier = 0;
tTimeout.WriteTotalTimeoutConstant = 0;

// config the timeout
if( !SetCommTimeouts((HANDLE)hCom,&tTimeout) )
{
ASSERT(FALSE);
return FALSE;
}

char lpBuff[BUFFER_BYTES];

DWORD dwRead = 0;
DWORD dwTotal = 0;

string strTotal = "";

//read loop for comm port.
while ( dwRead = ffComm.Read( lpBuff, BUFFER_BYTES - 1 ) )
{
dwTotal += dwRead;
string str(lpBuff, dwRead);
strTotal += str;
}

printf("%d bytes chars have been read:\n", dwTotal );

printf( strTotal );

return TRUE;
}

// Function: rsw( string str);
// rsw str;write str to COM port
BOOL rsw( string str )
{
if( !ffComm.IsOpen( ) )
{
printf("Please use rso[1,2] to open COM first.\n" );
return FALSE;
}

UINT hCom = ffComm.GetHandle();

if (hCom == file::hFileNull )
{
ASSERT(FALSE);
return FALSE;
}

int nLength = str.GetLength();
DWORD dwWrite = ffComm.Write( str.GetBuffer(nLength), nLength );

printf("%d bytes chars have been sent COM.\n", dwWrite );

return TRUE;
}

// Function: rsc;
//close the COM port open in rso
BOOL rsc()
{
if( ffComm.IsOpen() )
{
if( !ffComm.Close() )
{
printf("Error when close COM.\n");
return FALSE;
}

printf("COM was closed successfully\n");

return TRUE;
}

printf("COM was already closed.\n");
return TRUE;
}

// Function: rso( UINT nComm )
// rso [1,2]; like rso 2; to open COM2
BOOL rso( UINT nComm )
{
//First redirect into Script Window
LT_execute("Type.redirection = 1");

//Check comm prot is open or not
if( ffComm.IsOpen() )
{
printf("COM%d was already openned.\n", nComm);
return TRUE;
}

//Comm port name
string szCommPort;
szCommPort.Format( "COM%d:", nComm );

//Open comm port
if (!ffComm.Open(szCommPort, file::modeReadWrite ))
{
ASSERT(FALSE);
return FALSE;
}

UINT hCom = ffComm.GetHandle();

if (hCom == file::hFileNull )
{
ASSERT(FALSE);
return FALSE;
}

//Set DCB structure with some parameters
if ( !SetDCB( hCom, CBR_9600, 8, NOPARITY, ONESTOPBIT ) )
{
ASSERT(FALSE);
return FALSE;
}

printf("COM%d was openned successfully.\n", nComm);

return TRUE;
}

//Set DCB structure.
static BOOL SetDCB( UINT hCom, DWORD dwBaudRate, UINT nByteSize, UINT Parity, UINT StopBits )
{
// It will build on the current configuration, and skip setting the size
// of the input and output buffers with SetupComm. at the same time the DCB structure was tested.
DCB dcb;

if (!GetCommState((HANDLE)hCom, &dcb))
{
ASSERT(FALSE);
return FALSE;
}

//dcb parameters for user
dcb.BaudRate = dwBaudRate; // set the baud rate
dcb.ByteSize = nByteSize; // data size, xmit, and rcv
dcb.Parity = Parity; // no parity bit
dcb.StopBits = StopBits; // one stop bit

//dcb fixed parameters
dcb.fBinary=1;
dcb.fParity=0;
dcb.fOutxCtsFlow=0;
dcb.fOutxDsrFlow=0;
dcb.fDtrControl=0;
dcb.fDsrSensitivity=0;

dcb.fTXContinueOnXoff=0;
dcb.fRtsControl=0;

if (!SetCommState((HANDLE)hCom, &dcb))
{
ASSERT(FALSE);
return FALSE;
}

return TRUE;
}



1   L A T E S T    R E P L I E S    (Newest First)
easwar Posted - 11/19/2002 : 10:00:14 AM
Hi,

The following comments can be found at the beginning of the file with this example. The file is at \OriginC\Samples\RS232.c

////////////////////////////////////////////////////////////////////////////////////
// A sample program to illustrate a serial port communication with Origin C.
// the following commands are supported once this file is compiled
// rso [1,2]; like rso 2; to open COM2
// rsr; default will read and dump to script window
// rsw str;write str to COM port
// rsc; close the COM port open in rso
////////////////////////////////////////////////////////////////////////////////////

You can modify the program to suit your needs. For example, the rsr function just reads and dumps data from port onto scipt window. You could change that to store the data elsewhere for example.

If you have specific questions, please post again.

Easwar
OriginLab.

The Origin Forum © 2020 Originlab Corporation Go To Top Of Page
Snitz Forums 2000