C++ 用d2x写入数据
我有一个简单的程序,尝试使用FTDI D2xx库通过串行端口写入数据 程序只是打开端口,并尝试以一定速率写入数据。在我的示波器上,我偶尔会看到1缺失。我也只能通过调用SetBreakOn,然后再调用SetBreakOff来查看数据。如果我不这样做,我就看不到范围上的任何数据 我在这里做错什么了吗?在我的循环中,一旦数据被发送,在我写回缓冲区之前,0会被传输吗C++ 用d2x写入数据,c++,serial-port,d2xx,C++,Serial Port,D2xx,我有一个简单的程序,尝试使用FTDI D2xx库通过串行端口写入数据 程序只是打开端口,并尝试以一定速率写入数据。在我的示波器上,我偶尔会看到1缺失。我也只能通过调用SetBreakOn,然后再调用SetBreakOff来查看数据。如果我不这样做,我就看不到范围上的任何数据 我在这里做错什么了吗?在我的循环中,一旦数据被发送,在我写回缓冲区之前,0会被传输吗 #include <iostream> #include <windows.h> #include <std
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <ftd2xx.h>
#include <stdlib.h>
#include "string.h"
#include <unistd.h>
int main(int argc, char *argv[])
{
uint32_t numDevs;
FT_HANDLE FT_handle;
FT_STATUS FT_status; // status of the FT 232 chip
//Open Device
FT_STATUS ftStatus;
char * value = "FT4T6TXN";
ftStatus = FT_OpenEx(value,FT_OPEN_BY_SERIAL_NUMBER, &FT_handle);
if(ftStatus == FT_OK){
printf("successful open!\n");
}else{
printf("failure open! %d\n", ftStatus);
}
UCHAR Mask = 0xFF; //all output
UCHAR Mode = 0x04; //Selects the Synchronous Bit Bang Mode
ftStatus = FT_SetBitMode(FT_handle,Mask,Mode);
if (ftStatus == FT_OK) {
// synchronous Bit bang Mode enabled
printf("sync bit mode!\n");
}
else {
// FT_SetBitMode FAILED!
printf("setBitModeFailed!\n");
return -1;
}
DWORD BaudRate;
BaudRate = 366;
FT_status = FT_SetBaudRate(FT_handle,BaudRate);
if(FT_status != FT_OK){
printf("BAUD RATE SET FAILED! \n");
return -1;
}
uint32_t bytesWritten = 0;
UCHAR Buffer = 0x01; // data to be written to the port
//set flow control
FT_status = FT_SetFlowControl(FT_handle, FT_FLOW_RTS_CTS, NULL, NULL);
if(FT_status != FT_OK){
printf("flow not okay\n");
}
//Begin Looping Inf
while(true){
//I was unable to see Data without calling this?
FT_SetBreakOn(FT_handle);
FT_SetBreakOff(FT_handle);
//WRITE
FT_status = FT_Write( FT_handle, // handle to the chip
&Buffer, // address of the data
sizeof(Buffer), // Size of the Buffer
&BytesWritten // Number of bytes written
);
sleep(1);
if(FT_status != FT_OK){
printf("write not successful! %d \n", FT_status);
}
}
FT_Close(FT_handle); // Close the Serial port connection
}
#包括
#包括
#包括
#包括
#包括
#包括“string.h”
#包括
int main(int argc,char*argv[])
{
uint32_t numDevs;
FT_手柄FT_手柄;
FT_STATUS FT_STATUS;//FT 232芯片的状态
//开放式设备
FTU状态ftStatus;
char*value=“FT4T6TXN”;
ftStatus=FT_OpenEx(值、FT_OPEN_BY_序列号和FT_句柄);
如果(ftStatus==FT_正常){
printf(“成功打开!\n”);
}否则{
printf(“故障打开!%d\n”,ftStatus);
}
UCHAR Mask=0xFF;//所有输出
UCHAR Mode=0x04;//选择同步位模式
ftStatus=FT_设置模式(FT_手柄、遮罩、模式);
如果(ftStatus==FT_正常){
//启用同步位爆炸模式
printf(“同步位模式!\n”);
}
否则{
//FT_设置模式失败!
printf(“setBitModeFailed!\n”);
返回-1;
}
德沃德波特率;
波特率=366;
FT_状态=FT_设定波特率(FT_句柄,波特率);
如果(FT_状态!=FT_正常){
printf(“波特率设置失败!\n”);
返回-1;
}
uint32\u t字节写入=0;
UCHAR Buffer=0x01;//要写入端口的数据
//设置流量控制
FT_状态=FT_设置流量控制(FT_句柄、FT_流量、RTS_CTS、NULL、NULL);
如果(FT_状态!=FT_正常){
printf(“流量不正常\n”);
}
//开始循环Inf
while(true){
//如果不调用此,我无法查看数据?
FT_SetBreakOn(FT_手柄);
FT_后置断开(FT_手柄);
//写
FT_status=FT_Write(FT_句柄,//芯片句柄
&缓冲区,//数据的地址
sizeof(Buffer),//缓冲区的大小
&字节写入//写入的字节数
);
睡眠(1);
如果(FT_状态!=FT_正常){
printf(“写入不成功!%d\n”,FT\U状态);
}
}
FT_Close(FT_handle);//关闭串行端口连接
}