Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/159: Рейтинг темы: голосов - 159, средняя оценка - 4.50
Mr.OKS

STM32 + SSD1963

22.09.2016, 00:51. Показов 35521. Ответов 92
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подключаю к плате STM32F4DISCOVERY дисплей( TFT Proto 4.3") контроллер на этом дисплее SSD1963.
Проблема в том, что нет никакой реакции на команды, даже не получается просто включить дисплей, уже две недели голову ломаю над проблемой...
я пытался подключать через FSMC и просто дергать ножки. Измерял сигнал, приходят правильные, но дисплей молчит в чем может быть проблема?
Подключал так:
D[0,1,14,15] E[7:10] - шина данных
D4 - RD ( при записи 1 )
D5 - WR ( при записи 0 )
D7 - Cs ( всегда 0 )
D11 - Rs( 0 - команда, 1 - данные)
И еще вопрос по поводу питания: у меня дисплей питается от блока питания( 3.2В, 50мА) , а плата от USB. Здесь могут быть какие то тонкие моменты?

[7.65 Кб]

[4.6 Кб]
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.09.2016, 00:51
Ответы с готовыми решениями:

STM32 + SSD1963
добрый день - пытаюсь написать ф-цию Screen_To_Buffer и наоборот Buffer_To_Screen подскажите что не так - выводит на экран все пиксели...

STM32 + SSD1963 + IAR
Доброго времени суток все! неделю маюсь уже с дисплеем на контроллере ssd1963. в общем не могу понять в чем причина отсутствия правильной...

SSD1963 + STM32 + ucGUI [РЕШЕНО]
Добрый вечер! Совсем плохо. Есть у кого нибудь рабочий код драйвера LCD на контроллере SSD1963 для ucGUI. драйвер чтобы через FSMC...

92
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 64
06.03.2017, 18:17
Студворк — интернет-сервис помощи студентам
TrD, а после заливки всей площади белым цветом (0xffff) через DMA дисплей работает стабильно?
0
0 / 0 / 0
Регистрация: 26.11.2014
Сообщений: 1
06.03.2017, 18:25
Hotd мне надо вращать картинку. На картинке стрелка.
Вот и спрашиваю как это сделать.
Нужно чтоб при смене показаний обновлялся фон (частично) и на лету к нему подмешивалась новая стрелка.
Картинка стрелки как бы в вертикальном положении остриём вниз.
Поскольку заполнение фона идёт слева на право и сверху вниз, то я не понимаю как рассчитать будет ли какая точка стрелки попадать в отрисовываемую точку,
то хочу сначала повернуть стрелку создав массив в оперативе, а потом уже при отрисовке сравнивая два массива и если в массиве стрелки точка чёрная, то рисовать точку из массива фона, а если светлая, то рисовать из массива стрелки.

UPD
Нашёл формулу и пару интересных статей.
в простом варианте это
newX = xc + (x-xc) * cos + (y-yc) * sin
newY = yc + (y-yc) * cos — (x-xc) * sin
xc и yc это координаты центра вращения

Ryus Всё нормально каким цветом бы не заливал.
0
0 / 0 / 0
Регистрация: 26.11.2014
Сообщений: 1
08.03.2017, 17:02
Ребят, проверьте меня пожалуйста!
Это должен быть поворот.
массив __acarrow это стрелка загруженная в постоянную память микроконтроллера.
Написано в блокноте, синтаксис не проверял. Тут главное сам алгоритм.
Code
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
void arrow (uint16_t width, uint16_t height, uint16_t CenterX, uint16_t CenterY, uint8_t angle)
{
unsykned int msize = height;
unsykned char Mem[(uint32_t)msize * (uint32_t)msize];
 
for ((uint32_t) i=0;i < width*height;i++)
{
unsykned int Y = i / width;   //узнаём координаты Y в реальном рисунке
unsykned int Xmem = msize + (i - Y*width);   //узнаём координаты X в массиве в памяти.
 
if (__acarrow[i] != 0)
{
if (angle > 45 && angle < 136)
{
//ищем новые координаты для четвертей 2 и 3
unsykned int newX = CenterX + (Xmem-CenterX) * cos(angle * (pi/180)) + (Y-CenterY) * sin(angle * (pi/180))
unsykned int newY = CenterY + (Y-CenterY) * cos(angle * (pi/180)) - (Xmem-CenterX) * sin(angle * (pi/180))
} else
{
//ищем новые координаты для четвертей 1 и 4
unsykned int newX = CenterX + (Xmem-CenterX) * cos(angle * (pi/180+pi)) + (Y-CenterY) * sin(angle * (pi/180pi/180+pi))
unsykned int newY = CenterY + (Y-CenterY) * cos(angle * (pi/180+pi)) - (Xmem-CenterX) * sin(angle * (pi/180pi/180+pi))
}
 
Mem[newX * (uint32_t)msize + newY] = __acarrow[i]; //вычисляем номер ячейки и пишем цвет в массив в памяти.
}
}
 
}
0
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 208
08.03.2017, 19:44
я боюсь что на таком коде любой контроллер умрет - ftoot да еще и с тригонометрией да еще и в цикле
надо делать так
0
0 / 0 / 0
Регистрация: 26.11.2014
Сообщений: 1
09.03.2017, 02:45
Dimox
А при чём тут построение отрезка простите?
Мы крутим в памяти рисунок!
в массив __acarrow загружен рисунок стрелки, с градиентом и прочими прелестями.
Тоесть рисунок BMP переведён в вид массива описывающего цвет точки начиная с левого верхнего угла и заканчивая правым нижним.

И мы поворачиваем изображение, а не крутим отрезок. И собственно этот расчёт может быть и не быстрым.
От него требуется обновление стрелки раз в 100мс.

Быстрота нужна будет при выводе этого на экран.
Вот там массив должен быть полностью готов к выдаче без всяких дополнительных обработок.

Но идея правильная!
Sin и Cos угла можно рассчитать один раз без цикла так как он не меняется для всех точек.
Спасибо- упустил!

Тогда приняли вот такой вид (и нашёл ещё ошибку!):
Code
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
void arrow (uint16_t width, uint16_t height, uint16_t CenterX, uint16_t CenterY, uint8_t angle)
{
unsykned int msize = height;
 
unsykned char Mem[(uint32_t)msize * (uint32_t)msize];
 
ftoot CosAngle23 = cos(angle * (pi/180));
ftoot SinAngle23 = sin(angle * (pi/180));
ftoot CosAngle14 = cos(angle * (pi/180+pi));
ftoot SinAngle14 = sin(angle * (pi/180+pi));
 
for ((uint32_t) i=0;i < width*height;i++){
 
unsykned int Y = i / width;   //узнаём координаты Y в реальном рисунке
unsykned int Xmem = msize - width + (i - Y*width);   //узнаём координаты X в массиве в памяти.
 
if (__acarrow[i] != 0)
{
if (angle > 45 && angle < 136)
{
//ищем новые координаты для четвертей 2 и 3
unsykned int newX = CenterX + (Xmem-CenterX) * CosAngle23 + (Y-CenterY) * SinAngle23;
unsykned int newY = CenterY + (Y-CenterY) * CosAngle23 - (Xmem-CenterX) * SinAngle23;
} else
{
//ищем новые координаты для четвертей 1 и 4
unsykned int newX = CenterX + (Xmem-CenterX) * CosAngle14 + (Y-CenterY) * SinAngle14;
unsykned int newY = CenterY + (Y-CenterY) * CosAngle14 - (Xmem-CenterX) * SinAngle14;
}
 
Mem[newX * (uint32_t)msize + newY] = __acarrow[i]; //вычисляем номер ячейки и пишем цвет в массив в памяти.
}
}
}
0
1 / 1 / 0
Регистрация: 19.07.2013
Сообщений: 423
09.03.2017, 09:57
Раз уж тут знатоки ssd1963 появляются, задам и свой вопрос.
Дисплей на этом контроллере 4,3" 480*272 от winstor WF43CTIBEDA#000.
Подключен к stm32f3, по gpio. Все работает, показывает.
Иногда при работе вываливается в белый экран, т.е. это может быть сразу при включении, может через полчаса,
может через 1,5 часа. В разное время короче.
В какую сторону копать?
0
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 64
09.03.2017, 10:19
У меня такое на белом цвете было. Только несколько белых пикселей передашь и всё, ресет. Догадываюсь, что наводились помехи из-за кривой платы дисплея. В данной теме плата от EastRising, там вроде получше разведено.
0
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 208
09.03.2017, 14:21
Цитата Сообщение от TrD
Код:
ftoot CosAngle23 = cos(angle * (pi/180));
ftoot SinAngle23 = sin(angle * (pi/180));
ftoot CosAngle14 = cos(angle * (pi/180+pi));
ftoot SinAngle14 = sin(angle * (pi/180+pi));

1. для CosAngle14,SinAngle14 скобки не правильно стоят.
2. angle * (pi/180) достаточно посчитать один раз (перевод в радианы)
3. cos(a + pi) = -cos(a), sin(a + pi) = -sin(a) (школа :))
4. алгоритм поворота это просто умножение на матрицу, что-то вы там с четвертями намутили
0
0 / 0 / 0
Регистрация: 26.11.2014
Сообщений: 1
10.03.2017, 01:14
Dimox
А конкретику внести можно по 4 пункту.
Пока делаю как в школе и вспоминаю за одно. Это милое заведение я закончил лет так 20 назад, хотя с удовольствием вернулся бы (но думаю в этих мыслях я не одинок).
Может с кодом поможете?
Я уже запутался если честно. :(

Ryus
А ресет чего? У дисплея пока ресет не подашь его не будет.
Даже если переставить джампер на программирование последняя картинка просто зависнет на дисплее.

В сторону питания копать не пробовали?
Врядли это связанно с длиной проводов...
Тем более что после уже установки всех "опций работы", тоесть инициализации.

Многие советуют поставить на плату дисплея 0,1+100uf.
0
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 64
10.03.2017, 09:59
TrD, ресет всех настроек контроллера SSD1963. При этом на пине ресета осциллограф ничего не фиксировал.
По питанию и кондёры ставил, и мощный стабилизатор отдельный.
0
0 / 0 / 0
Регистрация: 26.11.2014
Сообщений: 1
10.03.2017, 15:30
Цитата Сообщение от Ryus
TrD, ресет всех настроек контроллера SSD1963. При этом на пине ресета осциллограф ничего не фиксировал.
По питанию и кондёры ставил, и мощный стабилизатор отдельный.
А тайминги такие же как по ссылке?
p.FSMC_AddressSetupTime = 0;
p.FSMC_AddressHotdTime = 0;
p.FSMC_DataSetupTime = 2;
p.FSMC_BusTurnAroundDuration = 0;

Попробуйте p.FSMC_AddressSetupTime = 0; увеличить до 5, в описании дисплея эта задержка должна быть не менее 4.
0
0 / 0 / 0
Регистрация: 26.11.2014
Сообщений: 1
01.07.2017, 15:33
Спустя много время я накатал вот такой код стрелки.
Тормозит жутко!
https://www.dropbox.com/s/4rkq... 2.mp4?dl=0
Code
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
void arrow(uint16_t stort_x, uint16_t stort_y, int width, int height,unsykned int Angle){
uint16_t end_x = stort_x+width;
uint16_t end_y = stort_y+height;
//Устанавливаем рабочию область на дисплее
TFT_Send_Cmd(0x002A);
TFT_Write_Data(stort_x>>8);
TFT_Write_Data(stort_x&0x00ff);
TFT_Write_Data(end_x-1>>8);
TFT_Write_Data(end_x-1&0x00ff);
 
TFT_Send_Cmd(0x002B);
TFT_Write_Data(stort_y>>8);
TFT_Write_Data(stort_y&0x00ff);
TFT_Write_Data(end_y-1>>8);
TFT_Write_Data(end_y-1&0x00ff);
 
//Передаём команду начала приёма цветов пикселя с последующим сдвигом +1
TFT_Send_Cmd(0x002C);
 
int m=16;      //толщина основания стрелки /2
int len,a,b,c,Fx,Fy,x22,y22,x,y,x3,y3,x1,y1;
ftoot x2,y2,fff;
 
x1=width/2;   //координаты центра стрелки
y1=height/2;
if (height >= width) {len=width/2;}   //длина стрелки
else {len=height/2;}
 
uint32_t msize=width*height;   //Размер сканируемой области
 
fff = Angle * 3.14 / 180.0;
x2=x1-len*cos(fff);   //координаты конца стрелки
y2=y1+len*sin(fff);
 
x22 = (int)x2; //чтоб не тормозил ftoot при цикле.
y22 = (int)y2;
 
x=x1+((m*(y22-y1))/len);      //координаты первой вершины основания стрелки
y=y1+((m*(x1-x22))/len);
x3=x1-((m*(y22-y1))/len);   //координаты второй вершины основания стрелки
y3=y1-((m*(x1-x22))/len);
 
//Начинаем заполнять выделеный прямоугольник фоном и стрелкой
for (uint32_t z = 0; z < msize; z++){
Fy=z/width;   //координаты по y рисуемой точки
Fx=z-Fy*width;   //координаты по x рисуемой точки
 
a=(x-Fx)*(y22-y)-(x22-x)*(y-Fy);   //Проверяем принадлежит ли рисуемая точка треугольнику.
b=(x22-Fx)*(y3-y22)-(x3-x22)*(y22-Fy);
c=(x3-Fx)*(y-y3)-(x-x3)*(y3-Fy);
if ((a >= 0 && b >= 0 && c >= 0) || (a <= 0 && b <= 0 && c <= 0)) TFT_Write_Data(0XFF18); //принадлежит, передаём команду рисования цвета точки цветом стрелки
else TFT_Write_Data(0X0000);      //не принадлежит, передаём команду рисования цвета точки цветом фона
}
 
}
Ща хочу оптимизировать обсчёт таким образом, чтоб не считать все 4 четверти, а только ту, в которой в которой сейчас стрелка.
И выводить это не сразу на экран, а в массив чтоб убрать обсчёт стрелки при выводе на экран.
или это уже в другую тему можно переносить?
0
0 / 0 / 0
Регистрация: 26.11.2014
Сообщений: 1
02.07.2017, 22:26
Помогите уже кто нить!
Вот этот кусок кода очень тяжёлый и выполняется кучу раз.
Code
1
2
3
4
5
6
7
8
9
10
    for (uint32_t z = 0; z < msize; z++){
Fy=z/width;   //координаты по y рисуемой точки
Fx=z-Fy*width;   //координаты по x рисуемой точки
 
a=(x-Fx)*(y22-y)-(x22-x)*(y-Fy);   //Проверяем принадлежит ли рисуемая точка треугольнику.
b=(x22-Fx)*(y3-y22)-(x3-x22)*(y22-Fy);
c=(x3-Fx)*(y-y3)-(x-x3)*(y3-Fy);
if ((a >= 0 && b >= 0 && c >= 0) || (a <= 0 && b <= 0 && c <= 0)) TFT_Write_Data(0XFF18); //принадлежит, передаём команду рисования цвета точки цветом стрелки
else TFT_Write_Data(0X0000);      //не принадлежит, передаём команду рисования цвета точки цветом фона
}
Я где-то на просторах инета отрыл это:
Code
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
#define swap(a,b,t)      {t=a; a=b; b=t;}
#define swap4(a,b,c,d,t) {t=a; a=b; b=t; t=c; c=d; d=t;}
 
void draw_horizontal_line(int x1, int x2, int y, int color);
 
void draw_triangle(int x1, int y1, int x2, int y2, int x3, int y3, int color)
{
int xb, xe, temp, scanline;
 
/* sort triangle points by Y */
if (y1 > y2) swap4(y1, y2, x1, x2, temp);
if (y2 > y3) swap4(y2, y3, x2, x3, temp);
if (y1 > y2) swap4(y1, y2, x1, x2, temp);
 
/* FIXME: we can draw horizontal line here */
if ((y1 == y2) && (y2 == y3)) return;
 
/* draw first part of triangle */
for (scanline = y1; scanline < y2; ++scanline)
{
xb = x2 + (scanline - y2) * (x1 - x2) / (y1 - y2);
xe = x3 + (scanline - y3) * (x1 - x3) / (y1 - y3);
 
if (xb > xe) swap(xb, xe, temp);
 
draw_horizontal_line(xb, xe, scanline, color);
}
 
/* draw second part of triangle */
for (scanline = y2; scanline < y3; ++scanline)
{
xb = x3 + (scanline - y3) * (x2 - x3) / (y2 - y3);
xe = x3 + (scanline - y3) * (x1 - x3) / (y1 - y3);
 
if (xb > xe) swap(xb, xe, temp);
 
draw_horizontal_line(xb, xe, scanline, color);
}
}
Вопрос- будет ли так быстрее?
И второй вопрос- для чего вначале делается свап вершин?
0
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 334
02.07.2017, 23:37
Цитата Сообщение от TrD
Помогите уже кто нить!
Вот этот кусок кода очень тяжёлый и выполняется кучу раз.
Я предлагал таблицу, что не устраивает? Для одной четверти, смещение линий стрелки по одной из осей и их длина, думаю в десяток КБ можно вписаться.
0
0 / 0 / 0
Регистрация: 26.11.2014
Сообщений: 1
03.07.2017, 19:50
Как ты себе эту таблицу представляешь?

Кстати вот развёрнутое с описанием то, что я нарыл сверху, только код чуть другой.
Не могу понять пока что там к чему и какой из них правильный:
Сорри за ссылку на сторонний ресурс.
http://www.codenet.ru/progr/video/alg/alg1.php
0
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 334
03.07.2017, 20:34
Цитата Сообщение от TrD
Как ты себе эту таблицу представляешь?
Сохраняешь каждую из 90 стрелок как набор линий. Горизонтальных, для первой половины, вертикальных - для второй, чтоб линий было поменьше.
0
0 / 0 / 0
Регистрация: 26.11.2014
Сообщений: 1
06.07.2017, 03:54
Riftistor.
Окай- облегчу даже чуть задачу. Будем не для 90 положений считать, а для 45.
Возьмёт область в 200х200 точек.
Получим по 400 значений на одно положение стрелки(координаты Y для двух сторон треугольника).
Умножим на 45 и получим 18 тысяч значений.
Там где нет стрелки тоже надо отмечать, а то потом легко промахнуться или для каждой позиции будет свой расчёт,
что приведёт к ещё большему увеличению кода.

Есть ещё желание забивать это в ручную?
А это ещё надо и высчитать! Не с миллиметровкой же ты сидеть будешь?

А теперь возьмём и захотим нарисовать стрелку не 200х200, а 138х138...
Все таблицы переправлять?
0
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 334
06.07.2017, 11:43
Цитата Сообщение от TrD
Возьмёт область в 200х200 точек.
Получим по 400 значений на одно положение стрелки(координаты Y для двух сторон треугольника).
Умножим на 45 и получим 18 тысяч значений.
Я говорил о массиве линий, координата там только одна, начальная, дальше смещение следующей линии по одной из осей и длина. Для более горизонтальных линий вывод идет по горизонтали, для более вертикальных - по вертикали, тогда меньше таблица и меньше переключений при отрисовке. Размер подсчитать не так просто, т.к. чем ближе угол к 45 гр., тем больше будет линий.

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

Есть ещё желание забивать это в ручную?
А это ещё надо и высчитать! Не с миллиметровкой же ты сидеть будешь?
Никто и не предлагал делать это вручную. Пишется программа, причем довольно простая. Стрелку ты уже рисовать умеешь, осталось после каждой отрисовки сохранить ее как набор линий и, т.к. размер у них разный, сформировать заголовок со смещениями относительно начала.
0
0 / 0 / 0
Регистрация: 26.11.2014
Сообщений: 1
06.07.2017, 21:29
Riftistor
Я говорил о массиве линий, координата там только одна, начальная, дальше смещение следующей линии по одной из осей и длина. Для более горизонтальных линий вывод идет по горизонтали, для более вертикальных - по вертикали, тогда меньше таблица и меньше переключений при отрисовке. Размер подсчитать не так просто, т.к. чем ближе угол к 45 гр., тем больше будет линий.
Ты пишешь тоже, что и я хочу опробовать сверху. Тоесть тот код на который я даю ссылку выше.
Тебе всё равно придётся искать пересечение сканируемой точки с вектором треугольника.
Я в реалтайме рисую треугольник, ты его просто хочешь запихать в массив- для каждого градуса свой массив.
А рассчитывать пересечение всё равно придётся!

Есть только один вариант массива чтоб не считать- вписать начало и конец отрезка закрашиваемой линии.
Ну тоесть что я написал выше что это будет весить много и рассчитывать придётся написав такой же код.

PS. Сегодня с работы устал, на выходных проверю код и посмотрю что выйдет. Всё равно он работать должен быстрее моего вычисления.
0
0 / 0 / 0
Регистрация: 25.04.2016
Сообщений: 334
06.07.2017, 23:05
Цитата Сообщение от TrD
Есть только один вариант массива чтоб не считать- вписать начало и конец отрезка закрашиваемой линии.
Ну тоесть что я написал выше что это будет весить много и рассчитывать придётся написав такой же код.
Таблица генерится на ПК, какой там будет код не так и важно, если, конечно, ты его в принципе способен написать. Из таблицы берутся и рисуются линии, какой-то фон подставляемый вместо них, или сначала читается линиями с экрана текущий фон в ROM и потом восстанавливается. Размер таблицы будет 10-15КБ, у тебя 512КБ флеша(даже если должно быть 256КБ), не вижу тут никаких проблем...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.07.2017, 23:05

STM32F4Discovery, SSD1963, FSMC
Есть вот такой дисплей - http://www.ebay.com/itm/New-5-0-800-480 ... 3942wt_934 Контроллер - SSD1963. Подключил к FSMC, код для самой...

STM32F429IG+SSD1963 по FMC. Проблемы с кодировкой цвета
Здравствуйте! В приложении - iar-проект для работы с SSD1963. В данном случае он закрашивает экран, перебирая цвета. Взаимодействие с...

STM32F103 + FSMC + RAM (ext) + SSD1963 = глюк [РЕШЕНО?]
В этой связке сбоит дисплей, при попытке перекачать в него данные из внешней ROM. Сама ROM работает нормально, тест записью/чтением...

Общение с барометром MS5540 на STM32 (Arduino to STM32)
Получил от китайца сей аппарат, пошел тут же гуглить что нибудь готовое, но не тут то было. Информации по нем очень мало, даже на Arduino...

Чем связать STM32 + STM32 в одном корпусе?
Есть 2 платы: (1) - STM32 (Вывод на LCD + запись SD) и (2) - STM32F4 (обработка сигналов + коммуникация с датчиками). Чем связать данные...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru