Общение с компом

Если вы - начинающий в электронике, то задайте ваш вопрос тут. Расскажите что вы уже сделали чтобы найти ответ на свой вопрос, опишите свои рассуждения.
sky
Сообщения: 7
Откуда: Russia

Сообщение sky » 09 дек 2011, 10:20

Хочу собрать девайс, который бы управлялся с моего компа. На данный момент мне известно, что такое можно соорудить с помощью микросхем типа FT232 - на компе появляется виртуальный COM порт, а девайс читает информацию через UART. Надеюсь, не ошибся. Хочется понять, можно ли подобное сотворить так, чтобы пользователь устройства, собираясь подключить его к компу, не думал о всяких сложностях, а просто брал USB шнурок и втыкал в девайс и комп, и после установки драйверов все работало- как такое сделать? Вроде есть микрухи, которые общаются с USB компа, а на выходе у них тот же UART?

Еще было бы классно, если от девайса не шел бы шнурок, а вставлялся радиопприемник в то же USB отверстие, а в комп - передатчик; типа как в беспроводных мышах. И тогда отребность в проводах вообще отпадает. Только откуда берется эта пара - приемник/передатчик? У нее есть какое-то официальное название? Девайс в идеале должен поддерживать оба эти подключения. Как это сделать можно, о уважаемые схемотехники? -)

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 09 дек 2011, 10:37

Для того, чтобы программа зразу понимала, что это - ее девайс, у FTDI есть параметр Description. После обнаружения нового подключения FTDIки нужно просто выполнить ft_open с параметром OPENBYDESCRIPTION (ну, или что-то в таком духе).

sky
Сообщения: 7
Откуда: Russia

Сообщение sky » 09 дек 2011, 11:00

Полезная инфа, сенкс. А по поводу беспроводного подключения что-нить подскажешь?

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 09 дек 2011, 11:24

Неа, не видел такого. Неплохая идея для разработки.

Аватара пользователя
unidk
Сообщения: 88
Откуда: Германия

Сообщение unidk » 26 дек 2011, 23:41

А по поводу беспроводного подключения что-нить подскажешь?

Bluetooth не подойдет? Он тоже управляется UART'ом.

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 26 дек 2011, 23:46

Дак автору хочется не уарт передавать, а USB. Кстати, я где-то видел USB передатчики.

Аватара пользователя
unidk
Сообщения: 88
Откуда: Германия

Сообщение unidk » 27 дек 2011, 00:00

Дак автору хочется не уарт передавать, а USB.

В начале упоминались микросхемы USB->UART типа CP2102 или FT232. Поэтому
я и спрашиваю, не устроит ли топикстартера Bluetooth...

александр
Сообщения: 23
Откуда: Москва

Сообщение александр » 07 янв 2012, 15:15

Товарищи, может сталкивался кто с подобной проблемой?) Имеется платка pci7841. Это переходничок для компа с pci на can. Плата имеет два независимых контроллера can. Если я конечно описание правильно понял. Вместе с ней шло два файла typedef.h и pci7841.h. Начинаю писать код. Первая задача, которая стоит - узнать версию драйвера устройства.

#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <process.h>
#include "D:\electronics\projects\test c++\CAN\adlink\pci7841.h"

int main (void){WORD a; //WORD это unsigned short int
a=GetDriverVersion();}

и тут возникает проблема: не компилируется и ругается
unresolved external 'GetDriverVersion' referenced from 'адрес проекта'

функция описана в последнем хедере как
WORD _stdcall GetDriverVersion(void); хотя на самом деле непонятно как она описана, ведь в подключаемом файле она упоминается только этой строкой. Если есть время помогите плиз разобраться.

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 07 янв 2012, 15:20

Ну, нужно подсунуть линкеру lib-файл, который наверняка прилагается.

александр
Сообщения: 23
Откуда: Москва

Сообщение александр » 07 янв 2012, 15:42

Спасибо , попробую погуглить!

александр
Сообщения: 23
Откуда: Москва

Сообщение александр » 27 янв 2012, 18:04

Наконец то получил заветные байты по can! И возник такой вопрос... А можно ли полученные 32 бита одной опирацией уложить в битовые поля.
Например получил b=0x12345678 на контроллер.
А в памяти контроллера уже есть структурка
struct data
{
unsigned v1:8;
unsigned v2:4;
unsigned v3:20;
} receive;
Сильно хочется сделать так receive=b, но компилятор ругается, пробовал так receive.v1=b, но в этом случае забираются только 8 бит от b... Можно ли подобную задумку осуществить не прибегая к сдвигу битов?

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 27 янв 2012, 18:22

Блин, причем тут общение с компом?

Код: Выделить всё

struct data
{
    union {
        struct
        {
            unsigned v1:8;
            unsigned v2:4;
            unsigned v3:20;
        }
       
        uint32 whole;
    }       
}

data.whole = 0xffffffff


Как-то так

александр
Сообщения: 23
Откуда: Москва

Сообщение александр » 27 янв 2012, 18:39

Всё разобрался!Спасибо! Просто сообщение с компа пришло... )

uschema.com
Сообщения: 162

Сообщение uschema.com » 27 янв 2012, 23:38

BSVi писал(а):Блин, причем тут общение с компом?

Код: Выделить всё

struct data
{
    union {
        struct
        {
            unsigned v1:8;
            unsigned v2:4;
            unsigned v3:20;
        }
        uint32 whole;
    }       
}
data.whole = 0xffffffff

Как-то так

один момент, при играх с юнионом полезно еще структуру приговорить прагмой __packed__

Вернуться в «Для начинающих»



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 24 гостя