Проект Дирижабль

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



LPT

Сообщений 1 страница 15 из 15

1

Программирование LPT под UBUNTU Linux

0

2

Александр, к пятнице реализовать драйвера для двигателя камеры:
http://uploads.ru/t/1/q/B/1qBO3.png
и для каждого из бортовых огней:
http://uploads.ru/t/P/o/k/PokjZ.jpg
В четверг продемонстрировать программное реверсивное управление двигателем на БК.

0

3

Александр, что с мускулом? И что с девайсом?

0

4

It`s alive!

Код:
#include <string.h>
#include <ncurses.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/io.h>
#include <sys/types.h>
#include <fcntl.h>
#include <mysql.h>
#include <iostream>


int main()
{
    /*int ch;
    bool ne=true;
    char buffer[256];
    initscr(); cbreak(); noecho();
    keypad(stdscr, TRUE);
    char c;
	int n, tem;*/
 MYSQL *conn;
  MYSQL_RES *result;
  MYSQL_ROW row;
  int num_fields;
  int i, cnt;

  if (ioperm(888, 3, 1)) {perror("ioperm"); addstr("error");}

  conn = mysql_init(NULL);
  mysql_real_connect(conn, "localhost", "root", "111111", "BK", 0, NULL, 0);
while(true)
{
    clear();
  mysql_query(conn, "SELECT camotor FROM control where id = (select max(id) as id from control)");
  result = mysql_store_result(conn);

  num_fields = mysql_num_fields(result);

  while ((row = mysql_fetch_row(result)))
  {
      /*for(i = 0; i < num_fields; i++)
      {
          printf("%s ", row[i] ? row[i] : "NULL");
      }
      printf("\n");*/
      cnt=atoi(row[0]);
  }

    if(cnt==1)
    {
        printf("up");
        outb(255, 888);
    }
    else if(cnt==2)
    {
        printf("down");
        outb(255,888);
    }
        else
        {
            printf("none");
            outb (0, 888);
        }

  mysql_free_result(result);
}
  mysql_close(conn);
}
	/*printf("Hit any key to stop\n");

	//set permissions to access port
	if (ioperm(888, 3, 1)) {perror("ioperm"); addstr("error");}

	tem = fcntl(0, F_GETFL, 0);
	fcntl (0, F_SETFL, (tem | O_NDELAY));

while (ne)
{
    if(ch==27)
    {
        ne=false;
        break;
    }


    while ( (ch = getch()) == ERR );
    //ch= getch();

    sprintf(buffer,"key %02i was pressed\n\n", ch);
    clear();
    addstr(buffer);
    if(ch==27)
    addstr("press <Enter> to exit.\n\n");
    else
    addstr("press <Esc> to exit.\n\n");
    switch (ch)
    {
        case 259:
        {
            outb(255, 888);
            break;
        }
        case 258:
        {
            outb(0,888);
            break;
        }
        case -1:
        {
            outb(0,888);
        }
    }
}
fcntl(0, F_SETFL, tem);
	outb(0, 888);

	//take away permissions to access port
	if (ioperm(888, 3, 0)) {perror("ioperm"); addstr("error");}
    while ( (ch = getch()) == ERR );
        endwin();
}*/

0

5

Хорошо, но недостаточно. Остальные пины?

0

6

Фигня, допилим как девайс оживёт. Прросто свитч-кейс и пару "иф".

0

7

Движок при нажатии кнопки должен делать !!один!! шаг. Двадцать шагов в одну сторону, двадцать в другую. с автоматической инициализацией положения. Как планируете это реализовать? А бортовые огни должны мигать. Как это?

0

8

Один шаг - фигня. Там пишем единицу на пин, потом слип и пин обнуляем.

0

9

С инициализацией возможны варианты. И моргалку по типу движка запилим.

0

10

что думаешь с инициализацией?

0

11

Как руль - вертим в любую сторону чтоб упёрлось. Это будет одно крайнее положение. Максимальный угол поворота посчитаем на земле. Вуаля!

0

12

уверен что движком не оторвет камеру об ограничитель?

0

13

Код:
#include <string.h>
#include <ncurses.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/io.h>
#include <sys/types.h>
#include <fcntl.h>
#include <mysql.h>
#include <iostream>
#include <unistd.h>
#include <math.h>

int quer(int n)
{
    char* qer;
    MYSQL *conn;
  MYSQL_RES *result;
  MYSQL_ROW row;
  int num_fields, out;
  int i, cnt;

  //if (ioperm(888, 3, 1)) {perror("ioperm"); addstr("error");}

  conn = mysql_init(NULL);
  mysql_real_connect(conn, "localhost", "cntrl", "pass", "BK", 0, NULL, 0);
    switch (n)
    {
    case 0:
        qer="SELECT camotor FROM control where id = (select max(id) as id from control)";
        break;
    case 1:
        qer="SELECT leftl FROM control where id = (select max(id) as id from control)";
        break;
    case 2:
        qer="SELECT rightl FROM control where id = (select max(id) as id from control)";
        break;
    case 3:
        qer="SELECT taill FROM control where id = (select max(id) as id from control)";
        break;
    case 4:
        qer="SELECT emptyb FROM control where id = (select max(id) as id from control)";
        break;
    case 5:
        qer="SELECT fullb FROM control where id = (select max(id) as id from control)";
        break;
    case 6:
        qer="insert into control (camotor) values (0)";
        break;
    }

    mysql_query(conn, qer);

  if(n<6)
  {
    result = mysql_store_result(conn);

    num_fields = mysql_num_fields(result);

    while ((row = mysql_fetch_row(result)))
    {
        cnt=atoi(row[0]);
    }

    mysql_free_result(result);

    mysql_close(conn);
    return cnt;
  }
  else return 0;
}

int powre(int pwr)
{
    int val = 1;
    for(int i=0; i<pwr+1; i++)
        val = val*2;

    return val;
}

int main()
{
    int q,i, cnt, out, tmp[6], notnull, lght[6];

if (ioperm(888, 3, 1)) {perror("ioperm"); addstr("error");}
for(i=0; i<6; i++)
    {
        tmp[i]=0;
        lght[i]=0;
    }

while(true)
{
    out=0;
    notnull =0;
    tmp[0]=0;
    q=0;
    for(i=0; i<6; i++)
    {
        q = quer(i);
        if((i>0)&&(q>0))
        {
            if(tmp[i]==0) tmp[i]=powre(i);
            else  tmp[i]=0;
            notnull = 1;
        }
        if(i==0)
        {
            tmp[i]=q;
            notnull = 1;
        }


    }

if(notnull)
{ int t = quer(6);
    for(i=0; i<6; i++)
        out= out+tmp[i];
 outb(out, 888);
            usleep(200000);
}

    //printf("%d\n",out);



}
if (ioperm(888, 3, 0)) {perror("ioperm"); addstr("error");}
}

0

14

Назовите конкретные сроки готовности системы управления камерой.

0

15

Финальная версия.

Код:
#include <string.h>
#include <ncurses.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/io.h>
#include <sys/types.h>
#include <fcntl.h>
#include <mysql.h>
#include <iostream>
#include <unistd.h>
#include <math.h>


int pin(int n)
{
    switch (n)
    {
    case 1:
        return 4;
        break;
    case 2:
        return 8;
        break;
    case 3:
        return 16;
    break;
    }
}

int main()
{
    MYSQL *conn;
  MYSQL_RES *result;
  MYSQL_ROW row;
  int num_fields, out;
  int i, c;
  int notnull, lght[3];

  for(i=0; i<3; i++)
    {
        lght[i]=0;
    }

  if (ioperm(888, 3, 1)) {perror("ioperm"); addstr("error");}

  conn = mysql_init(NULL);
  mysql_real_connect(conn, "localhost", "cntrl", "pass", "BK", 0, NULL, 0);

  while(true)
{
    out=0;
  mysql_query(conn, "select camotor, leftl, rightl, taill, emptyb from control where id = (select max(id) as id from control)");

  result = mysql_store_result(conn);

    num_fields = mysql_num_fields(result);


//if (ioperm(888, 3, 1)) {perror("ioperm"); addstr("error");}


    while ((row = mysql_fetch_row(result)))
    {
        notnull=0;
        for(i=0; i<5; i++)
            if(atoi(row[i])!=0)
                notnull=1;

        out=out+atoi(row[0])+(32*atoi(row[4]));
        for (i=1; i<4; i++)
        {
            if(atoi(row[i])==1)
            {
                if(lght[i-1]==1)
                    lght[i-1]=0;
                else
                    lght[i-1]=1;
            }
        }

    }

    if(c)
        {
            c=0;
         for (i=1; i<4; i++)
            {
                if(lght[i-1])
                    out=out+pin(i);
            }

        }
    else
        c=1;

printf("%d\n", out);
outb(out, 888);

if(notnull)
mysql_query(conn, "insert into control (camotor) values (0)");
usleep(200000);
//if (ioperm(888, 3, 0)) {perror("ioperm"); addstr("error");}
}
mysql_free_result(result);

mysql_close(conn);
if (ioperm(888, 3, 0)) {perror("ioperm"); addstr("error");}
}

0



Рейтинг форумов | Создать форум бесплатно