Форум
 

Вернуться   Форум "Фрикер Клуб" - кодграббер своими руками > Курилка > Прочие темы...

Важная информация

Ответ
 
Опции темы Опции просмотра
Старый 05.12.2018, 21:18   #11
jvc Меню Пользователя
Вступил в клуб
 
Регистрация: 12.10.2017
Сообщений: 27
По умолчанию Re: HELP - самопальный virtual com port!

теме UP!
А кто-нить игрался с FT232, но в плане соединения ножек Rx и Тх и передачи массива данных?
вопрос возник......

Добавлено через 9 минут
как видно из скрина:
желтым - буфер скопирован нормально.
красным - это уже идет передача... и стал появляться какой-то странный первый бит, при чем он плавающий, может взять любое значение из буфера.
т.е. первая посылка правильная, а ответ уже приходит больше.... ?!
хз откуда берется. никто с таким не сталкивался?

https://yadi.sk/i/zNYg5GxKS-yfNw

Добавлено через 1 минуту
ну и сам код:
PHP код:
/* Includes ------------------------------------------------------------------*/
#include <iostream>
#include <string.h>        
#include <windows.h>                //all_lib
#include <conio.h>                    //getch()
#include <process.h>                //exit()
#include <string>                    //строки
#include "ftd2xx.h"                    //ft232_lib
#include "stdafx.h"                    //xz
//#include "main.h"
using namespace std;
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
void FTDI_Config();
void FTDI_ID(void);
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* Programm_conf ------------------------------------------------------------*/
//char BufferSend[] = { "ZXCVBNML"}; //'\0'
char BufferSend[] = { 'z','x','c','v','b','n','m' }; //'\0'
char BufferRead[] = { };
char Recieve_buf[] = { };

DWORD SendBuffer;                                    
DWORD ReadBuffer;
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* FTDI_232RL_conf ---------------------------------------------------------*/
FT_HANDLE ftHandle;                                        //к чему обращаемся
FT_STATUS ftStatus;                                        //опрашивемый флаг-статус
DWORD numDevs;                                            //кол-во подлюченных девайсов
FT_DEVICE_LIST_INFO_NODE *devInfo;                        //характеристики

DWORD BytesWritten;                                        //кол-во передаваемых байт
DWORD BytesReceived;                                    //кол-во принимаемых байт
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* Main Funcion ---------------------------------------------------------*/
int main()
{
    
//настройки порта
    
FTDI_ID();
    
FTDI_Config();

    
//Копируем строки для передачи,проверяем,что всё закопировалось 
    
memcpy(Recieve_bufBufferSendsizeof(BufferSend));  //sizeof(uint8_t)* SendBuffer);
    
cout << ">>BufferSend =" << BufferSend << endl;
    
cout << ">>Recieve_buf=" << Recieve_buf << endl;

    while (
1)
    {

        
//Чистим регистры перед передачей
        
ftStatus FT_Open(0, &ftHandle);
        if (
ftStatus != FT_OK) { cout << " FT_Open failed " << endl; return 0; }
        else { 
cout << "FT_Open... " << endl; }

        
//Отчистка регистра Tx
        
if (FT_Purge(ftHandleFT_PURGE_TX) != FT_OK) { cout << "FT_Purge failed" << endl; exit(0); }
        else { 
cout << "FT_Purge_TX OK" << endl; }
        
//Отчистка регистра Rx
        
if (FT_Purge(ftHandleFT_PURGE_RX) != FT_OK) { cout << "FT_Purge failed" << endl; exit(0); }
        else { 
cout << "FT_Purge_RX OK" << endl; }

        
cout << "FT_Close... " << endl;
        
FT_Close(ftHandle);


        
//Запись пакета в порт
        
ftStatus FT_Open(0, &ftHandle);
        if (
ftStatus != FT_OK) { cout << " FT_Open failed " << endl; return 0; }
        else { 
cout << "FT_Open... " << endl; }

        
//Запись
        
ftStatus FT_Write(ftHandle, &BufferSendsizeof(BufferSend), &BytesWritten);
        if (
ftStatus != FT_OK) { cout << "FT_Write Failed\n\r" << endl; return 0; }
        else { 
cout << ">>BufferSend=" << BufferSend << endl; }


        
//чтение ответа из порта
        
ftStatus FT_Read(ftHandle, &BufferReadsizeof(BufferRead), &BytesReceived);
        if (
ftStatus != FT_OK) { cout << "FT_Write Failed\n\r " << endl; return 0; }
        else { 
cout << ">>BufferRead=" << BufferRead << endl; }

        
cout << "FT_Close... " << endl;
        
FT_Close(ftHandle);

        
Sleep(100);
    }
    
system("pause");
    return(
0);

}
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* FTDI_ID Funcion ---------------------------------------------------------*/
void FTDI_ID(void)
{
    
//Напечать на экраке хар-ки подключенных устройств
    
cout << "===================================================" << endl;
    
ftStatus FT_CreateDeviceInfoList(&numDevs);
    if (
ftStatus == FT_OK) { printf("OnLine Device = %d\n"numDevs); }
    if (
numDevs 0)
    {
        
devInfo = (FT_DEVICE_LIST_INFO_NODE*)malloc(sizeof(FT_DEVICE_LIST_INFO_NODE)*numDevs);

        
ftStatus FT_GetDeviceInfoList(devInfo, &numDevs);
        if (
ftStatus == FT_OK)
        {
            for (
int i 0numDevsi++)
            {
                
printf("Dev Number %d:\n"i); //первй девайс под номер 0.
                
printf(" ID=0x%x\n"devInfo[i].ID);
                
printf(" LocId=0x%x\n"devInfo[i].LocId);
                
printf(" SerialNumber=%s\n"devInfo[i].SerialNumber);
                
cout << "===================================================" << endl;
                
//ID = 0x4036001
                //LocId = 0x21
                //SerialNumber = A50285BI
            
}
        }
    }
}
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* FTDI_Config Funcion ---------------------------------------------------------*/
void FTDI_Config()
{
    
//Настройка Устройства
    
if (FT_Open(0, &ftHandle) == FT_OK)
    {
cout << "Device Config: FT_Open OK" << endl;}
    else { 
cout << "Device Config: ERROR" << endl; exit(0); }

    
//Настройка скорости передачи
    
if (FT_SetBaudRate(ftHandle9600) == FT_OK)
    {
cout << "Baud rate = 9600" << endl;}
    else { 
cout << "SET ERROR" << endl; exit(0); }

    
//Настройка кол-ва передаваемых бит, стоповый бит, четности
    
if (FT_SetDataCharacteristics(ftHandleFT_BITS_8FT_STOP_BITS_1FT_PARITY_NONE) == FT_OK)
    {
cout << "Bits = 8" << endl;  cout << "STOP_Bits = 1" << endlcout << "PARITY = none" << endl;}
    else { 
cout << "SET ERROR in configured" << endl; exit(0); }
    
    
FT_Close(ftHandle);
    
cout << "===================================================" << endl;

}
/*----------------------------------------------------------------------------*/ 
jvc вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 15:11. Часовой пояс GMT +3.


vBulletin 4.1.0 Перевод: zCarot
(C) www.phreakerclub.com
Яндекс.Метрика