#!/usr/bin/perl use strict; use warnings; use Win32::FTDI::FTD2XX; use Win32::SerialPort; my $FTDIdev = Win32::FTDI::FTD2XX->new(); my $PortName = "COM6"; #name of port we want to use my $stuff = pack(“a”, “stuff I want to write”); my $CPort6 = Win32::SerialPort-> new($PortName) || die "Can't open $PortName: $^E\n"; #initalise port #write to comport my $count_out = $CPort6->write($stuff); warn "write failed\n" unless ($count_out); sleep 1; my $PrintData = $CPort10->input; #expected return data #print print "Data: $PrintData 1\n"; my $Num = 2;# GetNumDevices(); print "No. Dev: $Num\n"; my $devOpen; #check if we can talk to the device with FTD2XX if($Num) { my $i = 1; $devOpen = $FTDIdev->OpenByIndex($i); my $devInfo = $FTDIdev->GetDeviceInfo($i) || die "Unable to get device info"; # if($devInfo) # { # my $out = sprintf(" Type:\t\t%d(%s)\n ID:\t\tVID(%04X) PID(%04X)\n Serial:\t%s\n Descr:\t%s\n", $devInfo->{TypeID}, $devInfo->{TypeNm}, $devInfo->{VID}, $devInfo->{PID}, $devInfo->{Serial}, $devInfo->{Descr} ); # print "$out"; # } } my $ID = $FTDIdev->PFT_HANDLE(); # point to the port we want my $sucecess = $FTDIdev->SetBitMode($ID, 0x03, 0x1); #FTDI chip, select pin 1 an pin 2, Asynchronous bit bang print "sucecess? $sucecess\n"; my $mode = $FTDIdev->GetBitMode($ID) || die "unable to get mode"; print "Mode is $mode\n"; my $devClose = $FTDIdev->Close(); $devOpen = $FTDIdev->OpenByIndex(1); print "$devOpen\n"; my $TrigOn = pack("C", 0xFF); #Test output $FTDIdev->SetWriteTimeout(1); $FTDIdev->write($ID, $TrigOn) || die "unable to write1"; Print “it works”; #end