Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 2

Проблемы с SELECT или кэшом

29.03.2019, 23:58. Показов 837. Ответов 3

Студворк — интернет-сервис помощи студентам
Добрый день.
Есть компьютер (типо встроенная система) который выводит данные из нескольких таблиц на OLED дисплей по RS-232.
Иногда компьютер перестает обновлять определенные значения считываемые из таблиц на дисплей. Но начинает снова обновлять их если подключить к нему смартфон в режиме модема или ноутбук (На компьютере есть веб-морда работающая с этой же базой и таблицами). Данные в базу постоянно пишутся другой программой, при выгрузке аномалий и столбняка значение нет, есть только на дисплей.
За работу с дисплеем отвечает моя программа. Она опрашивает 4 таблицы и вывод данные, а так же текущее системное время.
Данные в таблицах обновляются не чаще 1 раза в секунду. База требуется только для хранения и асинхронного доступа к данным.

Текущее значение из таблиц считываю так, аналогично запрашиваю данные и из других таблиц:
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
void read_base_sensor(char *name_table_sensor0){
        char buf1[255],buf2[255];
        conn = PQconnectdb(name_base);
        if(PQstatus(conn)!=CONNECTION_OK){
            PQfinish(conn);
            exit(0);
        }
        else{
            sprintf(buf1,"SELECT id,time,press,temp FROM %s WHERE id=(SELECT max(id) FROM %s);", name_table_sensor0 ,name_table_sensor0);
            res = PQexec(conn, buf1);
            // выводим название столбцов
            nFields = PQnfields(res);
 
            int max_lines = PQntuples(res);
            if(max_lines > 0){
 
            p = atof(PQgetvalue(res,max_lines-1,2));
            t = atof(PQgetvalue(res,max_lines-1,3));
 
            PQclear(res);
 
            if(t < 0){t1 = 1; t2 = 4;}
            if((t >= 0) && (t < 10)){t1 = 1; t2 = 5;}
            if((t > 9) && (t < 100)){t1 = 2; t2 = 4;}
            if(t > 99){t1 = 3; t2 = 3;}
            if(p < 0){p1 = 1; p2 = 4;}
            if((p >= 0) && (p < 10)){p1 = 1; p2 = 5;}
            if((p > 9) && (p < 100)){p1 = 2; p2 = 4;}
            if(p > 99){p1 = 3; p2 = 2;}
 
            sprintf(a_disp,"A:%*.*f\xDF\x43 %*.*fMPa;",t1,t2,t,p1,p2,p);
            }
        }
        PQfinish(conn);
    }
Этот код взят чуть не из примера по работе с БД. Есть подозрения что с залипаниями может быть как то связанно кэширование. Больше пока идей нет.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.03.2019, 23:58
Ответы с готовыми решениями:

Ошибка с кэшом
Здравствуйте,помогите исправить!!! Ошибка Notice: Use of undefined constant CACHE_DRIVER - assumed 'CACHE_DRIVER' in...

Select в select или другой способ решения
Необходимо написать запрос. В таблице Info хранится Имя пользователя. Связана таблица с таблицей Users по ID_Users. В таблице Chat....

Select + JOIN или несколько select
Сейчас занимаюсь проектированием архитектуры своего (будущего) php-приложения и наткнулся на противоречие. (по крайней мере для меня оно...

3
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
31.03.2019, 15:15
Может у вас OLED как-то кеширует вывод? Почему вы исключаете такую возможность?? Может надо fflush(a_disp), например, скомандывать после sprintf, чтобы данные действительно пропихнулись в физическое устройство вывода.
0
0 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 2
31.03.2019, 20:22  [ТС]
Нее, там все норм, данные с других таблиц и текущее системное время выводит стабильно!
0
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
01.04.2019, 23:25
Ну тогда, если на устройстве есть psql.exe, то проверьте этот запрос напрямую через консоль postgresql.
Может фиксация пишущей транзакции где-то запаздывает, в результате этот читающий запрос видит только "предыдущее" зафиксированное состояние (уровень изоляции у ПГ по умолчанию read commited).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.04.2019, 23:25
Помогаю со студенческими работами здесь

Проблемы с select
Добрый вечер. У меня есть проблема с запросом: select otd, count(otd) as kolvo, (select avg ( CAST(a01 AS numeric) + CAST(a02 AS...

Проблемы с блокировкой <select>
Всем привет!!! У меня в форме есть два поля типа &lt;select&gt;&lt;option&gt;&lt;/option&gt;&lt;/select&gt;. Мне необходимо написать скрипт, который...

Select - проблемы в телефонах
Доброго дня суток! Создал форму заказа. С ПК всё устраивает работает нормально, но при открытии сайта с мобильного возникают...

Трудности с кэшом CMS для сохранения изменённых стилей на всех страницах сайта
Здравствуйте, не так давно возникла задача сделать модуль на сайт для слабовидящих людей - увеличение шрифта, изменение цвета заднего фона...

Ошибочное или пропущенное зарезервированное слово или аргумент в инструкции SELECT
Вот запрос по которому должны сортироваться данные в ADOTable. В БД запрос работает, а вот билдере нет. ADOQuery2-&gt;Close(); ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru