Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2014, 22:50   #1
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию Сделать код кроссплатформенным

Без вступления. Есть код
Код:
#include <stdio.h>   
#include <string.h>  
#include <unistd.h>  
#include <fcntl.h>   
#include <errno.h>   
#include <termios.h> 
#include <sys/types.h>
#include <sys/stat.h>
 
 
int fd; 
char buf[512];
 
int open_port(void);
int main(void)
 { 
    fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);
      if (fd == -1)
        {

           printf("error\n");
        }
     else
        {
         struct termios options; 
         tcgetattr(fd, &options); 
        
         cfsetispeed(&options, B9600); 
         cfsetospeed(&options, B9600); 
         
         tcsetattr(fd, TCSANOW, &options); 

         fcntl(fd,F_SETFD,0);

           while (true)
            {
                 if (read(fd,buf,4)!=0)
                   printf("%s",buf);
                  memset(&buf,0,512); 
            }
        }
 close(fd);

        
}
В третей строке #include <unistd.h> , который делает код платформозависимым. Вопрос, можно как-то только средствами с++ сделать код кроссплатформенным (fopen, например)? Или Qt, работая с файлами. Напрягает меня QSerialPort из-за того, что он не входит в коробку с Qt.
Заранее спасибо.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось Stilet; 11.02.2014 в 22:53.
_PROGRAMM_ вне форума Ответить с цитированием
Старый 11.02.2014, 22:54   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
/dev/ttyUSB0
А это? Разве это будет работать в Винде?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.02.2014, 22:58   #3
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Да и здесь палочки, как в Линуксе
Код:
#include <sys/types.h>
type_Oleg вне форума Ответить с цитированием
Старый 11.02.2014, 23:13   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

автор, у вас код крос!!! в любой оси скобки останутся скобками а букавки букавками.
eval вне форума Ответить с цитированием
Старый 12.02.2014, 07:06   #5
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
А это? Разве это будет работать в Винде?
Ну заменить на COM1 у меня руки дойдут.
Цитата:
Да и здесь палочки, как в Линуксе
Вообще да. Аргумент.
Цитата:
автор, у вас код крос!!! в любой оси скобки останутся скобками а букавки букавками.
А вот и нет. У меня каждая строка не заканчивается на 13,10(0x0D,0x0A)

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 12.02.2014, 09:00   #6
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Цитата:
автор, у вас код крос!!!
Нет, у него код чуть больше, чем полностью под никсы. Выходы обычные:
1. ифдефить под оси
2. использовать кросслибы под используемое
3. писать и поддерживать версии под разные оси отдельно
4. cygwin и подобное
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 12.02.2014, 09:19   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
писать и поддерживать версии под разные оси отдельно
По-моему это лучшее. Хотя и ифдефить можно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.02.2014, 15:22   #8
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
По-моему это лучшее. Хотя и ифдефить можно.
Я уже не помню что такое WinAPI.
Цитата:
ифдефить под оси
Цитата:
писать и поддерживать версии под разные оси отдельно
Примерно одно и тоже.
Ладно, попробую сделать для двух ОС.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 12.02.2014, 16:12   #9
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Цитата:
Примерно одно и тоже.
Примерно да не совсем... Можно ВинАПИ юзать для всегго, а можно с++ либу для большинства и ифдефить важное.
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 12.02.2014, 16:45   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Да и здесь палочки, как в Линуксе
Код:
#include <sys/types.h>
это не принципиально для винды.
Цитата:
Сообщение от _PROGRAMM_ Посмотреть сообщение
У меня каждая строка не заканчивается на 13,10(0x0D,0x0A)
это не винде важно, а компилятору.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать код более качественным rUs_LAN C# (си шарп) 3 23.11.2011 14:28
Процедура! Нужно код сделать процедурой : ) JasperCRT Общие вопросы Delphi 9 14.03.2011 09:28
Помогите сделать код работоспособным (с++) Александр Елис Помощь студентам 6 18.08.2009 20:42
Модернизировать код, сделать его быстрее Rusl92 Общие вопросы Delphi 5 03.11.2008 19:23