void viewer(String j) { // Ряжанка с яблоком, Злагода
bool displayUpdate = 1;
float cof = 100; // Коэффициент масштабирования
int centerX = 64; // Координата X центра экрана
float flyx = 1; // Смещение по X
JsonDocument rawSignal1;
readJsonFromFile(objectDoc[j]["RawData"].as<const char*>(), rawSignal1);
int size = rawSignal1["RAW"].as<JsonArray>().size();
JsonArray arr = rawSignal1["RAW"].as<JsonArray>();
uint32_t allTime = 0; // Подсчет всего времени сигнала
for (int i = 0; i < size; i++) {
allTime += abs(arr[i].as<int>());
}
while (1) {
static uint8_t pointer = 0;
tk();
if (displayUpdate != 0) {
displayUpdate = 0;
oled.clear();
oled.home();
drawSignal(cof, rawSignal1["RAW"].as<JsonArray>(), size, flyx, centerX, allTime); // Отрисовка сигнала
oled.update();
}
// Управление масштабированием
if (up.click() or up.step()) {
cof = constrain(cof -= cof/10, 0, 100);
displayUpdate = 1;
}
if (down.click() or down.step()) {
cof = constrain(cof += cof/10, 0, 100);
displayUpdate = 1;
}
// Управление перемещением по X
if (left.click() or left.step()) {
flyx = constrain(flyx -= cof/20, 0, 100);
displayUpdate = 1;
}
if (right.click() or right.step()) {
flyx = constrain(flyx += cof/20, 0, 100);
displayUpdate = 1;
}
// Кнопка "Назад"
if (back.click()) return;
}
}
void drawSignal(float cof, JsonArray arr, int size, float flyx, int centerX, uint32_t allTime) {
uint32_t percent = allTime * (cof/100); // Определение зоны для отображения
uint32_t sdvig = (allTime - percent) * (flyx/100); // Перемещение зоны в доступной области
uint8_t y = 16; // Установка высокого уровня по умолчанию
int curx = 0;
// Вывод параметров отладки
oled.setCursor(0, 0);
oled.print(allTime); // Длительность всего сигнала
oled.print(" ");
oled.print(percent); // длительность помещаемая на екране
oled.print(" ");
oled.print(sdvig); // Пропущеное время до отрисовки
// отрисовка сигнала
for (int i = 0; i < size; i++) {
y = 48; // Параметр уровня сигнала низкий
if (arr[i] > 0) y = 16; // Изменяем параметр сигнала если он высокий
if (curx + abs(arr[i].as<int>()) > sdvig && curx < sdvig + percent) {
oled.fastLineH(y, map(curx - sdvig, 0, percent, 0, 127), map(curx + abs(arr[i].as<int>()) - sdvig, 0, percent, 0, 127)); // рисование горизонтальной линии (отображение уровня сигнала (y = 16 -> высокий, y = 48 -> низкий))
oled.fastLineV(map(curx + abs(arr[i].as<int>()) - sdvig, 0, percent, 0, 127), 16, 48); // Удобное для глаз отделение высокого сигнала от низкого
}
curx += abs(arr[i].as<int>()); // Добавляем растояние уже пройденного сигнала
}
}
users = []
async def send(ws, message):
await ws.send(json.dumps(message))
async def handler(websocket, _):
#Вызывается при присоединении пользователя
user = websocket
users.append(user)
# Ожидает сообщения от клиента
try:
async for message in websocket:
# Возврат сообщения
await send(user, {"type": "pong"})
except:
pass
if __name__ == '__main__':
print("Sent!")
if config.SSL_KEY:
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
ssl_context.load_cert_chain(config.SSL_CHAIN, config.SSL_KEY)
start_server = websockets.serve(handler, config.IP, config.PORT, ssl=ssl_context)
else:
start_server = websockets.serve(handler, config.IP, config.PORT)
asndf = asyncio.get_event_loop()
asndf.run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
@commands.command(aliases = ["pin"])
@commands.cooldown(1, 60, commands.BucketType.user)
async def ping(self, ctx):
await ctx.channel.purge(limit = 1)
emb = discord.Embed (title = 'Пинг: {0} ms'.format(client.latency * 1000), colour = discord.Color.gold())
await ctx.send(embed = emb,delete_after=30)
@Client.event
async def on_ready():
while True:
try:
channel = await Client.fetch_channel(input("id Канала: "))
await channel.send(content=input("Ваше сообщение: ")
except Exception:
print("Не хватает прав")
async def test(ctx, *, user_id: int):
user = await Client.fetch_user(user_id=user_id)
await user.send('test')
@Client.command()
async def help(ctx):
emb1 = discord.Embed(title="Информация о командах", color=random.randint(1, 16777216))
emb1.add_field(name = f"`{PREFIX}help` : ", value="Вызовет это меню", inline=False)
message = await ctx.send(embed = emb1)
@Client.command()
async def help(ctx):
await ctx.send(f"ваш текст") #перенос строки осуществляется добавлением: \n без кнопки Enter!
@Client.command()
async def info(ctx,member:discord.Member = None, guild: discord.Guild = None):
await ctx.message.delete()
if member == None:
emb = discord.Embed(title="Информация о пользователе", color=ctx.message.author.color)
emb.add_field(name="Имя:", value=ctx.message.author.display_name,inline=False)
emb.add_field(name="Айди пользователя:", value=ctx.message.author.id,inline=False)
t = ctx.message.author.status
if t == discord.Status.online:
d = " В сети"
t = ctx.message.author.status
if t == discord.Status.offline:
d = "⚪ Не в сети"
t = ctx.message.author.status
if t == discord.Status.idle:
d = " Не активен"
t = ctx.message.author.status
if t == discord.Status.dnd:
d = " Не беспокоить"
emb.add_field(name="Активность:", value=d,inline=False)
emb.add_field(name="Статус:", value=ctx.message.author.activity,inline=False)
emb.add_field(name="Роль на сервере:", value=f"{ctx.message.author.top_role.mention}",inline=False)
emb.add_field(name="Акаунт был создан:", value=ctx.message.author.created_at.strftime("%a, %#d %B %Y, %I:%M %p UTC"),inline=False)
emb.set_thumbnail(url=ctx.message.author.avatar_url)
await ctx.send(embed = emb)
else:
emb = discord.Embed(title="Информация о пользователе", color=member.color)
emb.add_field(name="Имя:", value=member.display_name,inline=False)
emb.add_field(name="Айди пользователя:", value=member.id,inline=False)
t = member.status
if t == discord.Status.online:
d = " В сети"
t = member.status
if t == discord.Status.offline:
d = "⚪ Не в сети"
t = member.status
if t == discord.Status.idle:
d = " Не активен"
t = member.status
if t == discord.Status.dnd:
d = " Не беспокоить"
emb.add_field(name="Активность:", value=d,inline=False)
emb.add_field(name="Статус:", value=member.activity,inline=False)
emb.add_field(name="Роль на сервере:", value=f"{member.top_role.mention}",inline=False)
emb.add_field(name="Акаунт был создан:", value=member.created_at.strftime("%a, %#d %B %Y, %I:%M %p UTC"),inline=False)
await ctx.send(embed = emb)