Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
1

Что обозначает такой символ status |= ?

16.08.2016, 21:38. Показов 1328. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не смог найти в инете эти 2 символа, что они обозначают? если бы это было в условии, то было бы похоже на проверку (Не равно), но эта вторая строка после IF, а значит какое то действие, вот в этом коде
C
1
2
if (level) status[B] |= [/B]TIOCM_RTS;
     else [B]status &= ~TIOCM_RTS[/B];
и за одним еще вот это "status &= ~TIOCM_RTS" что значит? , status - это число, по идее оно должно записаться в порт TIOCM_RTS (Запрос на передачу), но конечно я не уверен, что прав.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.08.2016, 21:38
Ответы с готовыми решениями:

Что обозначает символ # в коде
While ch<>#13 do - что обозначает #

Ввести строку и символ с клавиатуры. Проверить есть ли такой символ в строке
Совершенно не понимаю Assembler, помогите пожалуйста с заданием. Задание: Ввести строку и символ...

Что обозначает ->
Что обозначает -> ? например top ->value = c;

Что обозначает операция?
Пытаюсть разобраться в схема постороения ЭВМ, что означает операция сверху справа на схеме? Там где...

8
Заблокирован
16.08.2016, 21:58 2
Это bitwise "или" и "и".
1
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,662
Записей в блоге: 14
16.08.2016, 22:05 3
status |= TIOCM_RTS
это
status = status | TIOCM_RTS

status &= ~TIOCM_RTS
это
status = status & (~TIOCM_RTS)
~ - инверсия бит
1
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
17.08.2016, 07:28  [ТС] 4
[Спасибо большое , сейчас понятно, это реализация логики, а вот этот код что значит?
C
1
 flags |= TIOCM_RTS |TIOCM_DTR;
flags =flags ИЛИ RTS ИЛИ DTS - получается, если хотя бы в одной переменной есть логическая 1, то в переменную Flags запишется 1
И еще вот это
C
1
 flags &= ~(TIOCM_RTS);
- flags = flags И НЕ RTS - если в RTS логическая 1 , то не зависимо от прежнего состояния флага, в переменную flags запишется логический 0, так правильно или нет?
0
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,662
Записей в блоге: 14
17.08.2016, 07:33 5
flags |= TIOCM_RTS |TIOCM_DTR это flags = flags | (TIOCM_RTS |TIOCM_DTR)
Запишется не 1, а сумма flags, TIOCM_RTS и TIOCM_DTR, через OR (ИЛИ).
~ не из 0 в 1 и не наоборот, для этого есть операция !. Это инверсия всех битов.
1
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
17.08.2016, 09:17  [ТС] 6
Rius Спасибо, наверно дошло..., но не все
C
1
  ioctl(fd, TIOCMGET, &serial);
serial равен 4026 это 12 бит данных , старшие 4 логическая 1, следовательно 8 младших бит это состояние управляющих сигналов сом порта, мне нужно изменить какой либо сигнал на выход, например RTS, значит мне надо его в этом коде найти и проинвертировать и записать обратно в Serial порт, потом снова прочитать весь порт с некоторой задержкой и убедиться что этот бит (RTS) изменился, теперь правильно?
0
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
17.08.2016, 09:57  [ТС] 7
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <termios.h>
#include <fcntl.h>
#include <sys/ioctl.h>
 #include <stdio.h>
 #include <stdlib.h>
#include <string.h>
main() {
        int fd, serial, nom;
 int flags;
  nom=10;
flags=0;
 
        fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NONBLOCK );
 
     usleep(nom);
                ioctl(fd, TIOCMGET, &serial);
 
                 printf( "RTS изначальное %x\n", TIOCM_RTS);
 
                usleep(nom);
                ioctl(fd, TIOCMGET, &flags);//считываем порт
                usleep(nom);
                  printf( "Флаг изначальный %x\n", flags);
                if (TIOCM_RTS>0)
                flags=flags-TIOCM_RTS; //удаляем RTS
                else
                    flags=flags+2;//добавляем RTS
                    usleep(nom);
                       printf( "Флаг после исправления %x\n", flags);
                ioctl(fd, TIOCMSET, &flags); //записываем результат в порт
                usleep(1000);
                ioctl(fd, TIOCMGET, &serial);//снова считываем и проверяем
                usleep(nom);
                printf( "RTS после исправления %x\n", TIOCM_RTS);
 usleep(nom);
 
 
}
        close(fd);
      //  return 0;
флаг изменяется, а значение в порту не меняется, не подскажете в чем ошибка?
Миниатюры
Что обозначает такой символ status |= ?  
Вложения
Тип файла: zip serial_port20.c.zip (669 байт, 1 просмотров)
0
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,662
Записей в блоге: 14
17.08.2016, 09:59 8
Цитата Сообщение от седьмой Посмотреть сообщение
flags=flags-TIOCM_RTS; //удаляем RTS
Цитата Сообщение от седьмой Посмотреть сообщение
flags=flags+2;//добавляем RTS
Так не делается. Используйте упомянутые выше операции, а не + и -.

По части линукса не подскажу.
1
45 / 44 / 1
Регистрация: 11.07.2012
Сообщений: 1,024
17.08.2016, 11:52  [ТС] 9
Спасибо, буду пробовать...
0
17.08.2016, 11:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.08.2016, 11:52
Помогаю со студенческими работами здесь

Что обозначает дефис
Здрасте! Левая часть выражение: \d{3}-\d{2} обозначает, что мы ищем три цифры, идущих подряд....

Что обозначает в прологе -> ?
Столкнулась с примером где есть эта стрелка и хотелось бы разобраться но не могу найти в интернете...

Что обозначает здесь this?
Что значит тут this: public XYCoord() : this(0, 0) и тут (один и тоже вроде бы случай): ...

Что обозначает запись
Читаю книгу PHP 5 в подледнике и тут появилась такая запись $$a //и такая echo &quot;b$a&quot; что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru