| USB-001-SERでRTS信号トグル実験 |
|
| FTDI社のFT8U232AMを使用したUSB-SERIAL変換基板(USB-001-SER)で、D2XXダイレクドライバを用い、RTS信号をトグルする実験をしてみました。 |
波形にてしめします。約2mSから3mSかかっています。![]() クリックして拡大 |
| 以下にテスト用のソースを示します。ソースがすべて正しいとは限らないかもしれません。 |
// usb001s1.cpp : USB-001-SERでDXXダイレクトドライバを用いて、RTSなどの信号を制御する例
//
#include "stdafx.h"
#include "Ftd2xx.h" //FTDI社供給ヘッダファイル
/** USB-001操作関数 **/
int USB_001_opn( void ); /* 使用開始 */
int USB_001_setRTS( int dt ); /* RTS信号制御 1/0 */
int USB_001_setDTR( int dt ); /* DTR信号制御 1/0 */
int USB_001_readCTS( void ); /* CTS信号読み込み 1/0 */
int USB_001_readDSR( void ); /* DSR信号読み込み 1/0 */
int USB_001_close( void ); /* 使用終了 */
FT_HANDLE USB_001_han; /* D2XX操作用ハンドル変数 */
int USB_001_opn( void ) /* 使用開始 */
{
FT_STATUS st;
st = FT_Open( 0, &USB_001_han );
if( st == FT_OK ){
return 1;
}else{
return 0;
}
}
int USB_001_setRTS( int dt ) /* RTS信号制御 1/0 */
{
FT_STATUS st;
if( dt == 0 ){
st = FT_SetRts( USB_001_han );
}else{
st = FT_ClrRts( USB_001_han );
}
if( st == FT_OK ){
return 1;
}else{
return 0;
}
}
int USB_001_setDTR( int dt ) /* DTR信号制御 1/0 */
{
FT_STATUS st;
if( dt == 0 ){
st = FT_SetDtr( USB_001_han );
}else{
st = FT_ClrDtr( USB_001_han );
}
if( st == FT_OK ){
return 1;
}else{
return 0;
}
}
int USB_001_readCTS( void ) /* CTS信号読み込み 1/0 */
{
FT_STATUS st;
DWORD mstat;
st = FT_GetModemStatus( USB_001_han, &mstat );
if( mstat & 0x0000010 ){
return 1;
}else{
return 0;
}
}
int USB_001_readDSR( void ) /* DSR信号読み込み 1/0 */
{
FT_STATUS st;
DWORD rxb, txb, mstat;
st = FT_GetModemStatus( USB_001_han, &mstat );
if( mstat & 0x0000020 ){
return 1;
}else{
return 0;
}
}
int USB_001_close( void ) /* 使用終了 */
{
return( FT_Close( USB_001_han ) );
}
void USB_test( void ) /* test */
{
char k;
int owari;
int dt;
int i;
int stat;
owari = 0;
while(owari == 0){
if (USB_001_opn() /* 使用開始 */ != 1 ){
printf( "open error! \n " );
break;
}
dt = 1;
for(i=0;i<1000;i++){
USB_001_setRTS( i & 1 ); /* RTS信号制御 1/0 */
}
owari = 1;
USB_001_close(); /* 使用終了 */
}
}
int main(int argc, char* argv[])
{
printf("--Start--\n");
USB_test(); /* test */
printf("--End--\n");
return 0;
}
|