1

(2 відповідей, залишених у C#, .NET)

LoganRoss написав:

А пробували вручну закинути ті DLL-ки в той шлях, що вказаний в помилці?

то шлях я задавав в ручну коли в toolbox items --> Browse клікаєш, тикаєш носом в DLLку і воно видає помилку, при чому я закидував з 10 з різних джерел, результат один і той самий...

LoganRoss написав:

І посилання Fuuuuuuu... виправте, а то сам захотів інструкцію прочитати, а там новини з цицьками і меми. За півгодини тільки згадав чого перейшов на те посилання:)

автоматом наклікав з контакту посилання переадресації, а не кінцеву адресу, переправив посилання
http://www.independent-software.com/gmap-net-tutorial-maps-markers-and-polygons/

взяв ноутбук... зайшов в NuGet... встановив фреймворк... і все... в тулбарі одразу з'явилось все що потрібне... на стаціонарному жодне шаманство не допомагає... як так? той самий віндовс та сама студія...

2

(2 відповідей, залишених у C#, .NET)

  • З'явилось бажання освоїти мапи для WinForm, конкретно вибір пав на GMap.NET WindowsForms (так як на ню є більш-менш внятна документація і 37к завантажень теж про це говорять так як у конкурентів максимум 2к)
    https://pp.сайт-злодій/c637819/v637819917/42631/ffVUvS2sX9E.jpg

  • знайшов маленьку інструкцію як їх використовувати http://www.independent-software.com/gma … -polygons/ і вже на другому пункті виконання інструкції все стало бо просто ніяк той toolbox не з'являється... перечитав купу всякої всячини на форумах і нічого толкового не знайшов.
    саму DLL завантажував як стандартними інструментами VS2015 NuGet так і архівними файлами з офіційної сторінки в ручну прописуючи їх в References, результат той самий...
    https://pp.сайт-злодій/c637819/v637819917/42569/tC-K5gl3AzY.jpghttps://pp.сайт-злодій/c637819/v637819917/4261f/FR4guuJtF2w.jpg

  • завантажив я готовий проект і там toolbox присутній... частково... в toolbox items його далі немає в жодній вкладці
    https://pp.сайт-злодій/c637819/v637819917/42629/oq7Urrz0_h4.jpg
    як варіант можна переробити під себе той проект що вже є (але це криво, довго і не зручно)
    або прописувати вручну те вікно з мапою (але мені потрібна проста він.форма, а не оригінальний фаталіті з морталкомбат)

3

(21 відповідей, залишених у C++)

.

4

(21 відповідей, залишених у C++)

.

5

(21 відповідей, залишених у C++)

.

6

(21 відповідей, залишених у C++)

нічого не зрозумів з питання... і на форумі написано що перш ніж задати питання хоча б спробуйте самі щось зробити, а потім вже створювати тему куди кидати код який у вас вийшов з описом що у вас не працює... це ж не сайт з ГДЗ...

з того що я зрозумів то це те що у вас є масив випадкових чисел (впорядкованих чи ні не зрозуміло) далі він знаходить кількість чисел які знаходяться в масиві і входять в заданий діапазон...

Краще всього почати навчання з гарної книги 
                        Мова програмування C, друге видання
                                                          Браян В. Кернiган, Денiс М. Рiчi

після читання цієї книги відпадає дуже багато питань (книгу я завантажив)

#include <stdio.h>

int return_number(int *array, int max, int min, int size); //Функція яку потрібно було реалізувати

int main (){
    int max_value;                                //максимальне значення діапазону
    int min_value;                                //мінімальне значення діапазону
    int size = 10;                                //розмір масиву
    int array[10] = {12,95,34,0,23,43,5,76,85,99};//оголошення масиву і присвоєння йому значень
    printf("Enter \"Max\" value: ");
    scanf("%i", &max_value);                        //зчитуємо максимальне значення
    printf("Enter \"Min\" value: ");
    scanf("%i", &min_value);                        //зчитуємо мінімальне значення
    
/*прінтФ викликає функцію, передає числа а отримує результат обчислень який друкє як інтове число*/
    printf("The count of numbers that in range _ %i", return_number(array, max_value, min_value, size));   
}

/*функція приймає (вказівник на масив, максимальне число, мінімальне число,розмір масиву)*/
int return_number(int *array, int max, int min, int size){
    int index;                            //число для циклу for                         
    int count = 0;                        //оголошуємо змінну для підрахунків
    for(index = 0; index<size; index++)        //проходиму по цикклу стільки разів скільки чисел в масиві
        if(array[index]<=max && array[index]>=min)    //перевіряємо чи входить число з масиву в діапазон
            count++;                    //якщо входить то інкрементуємо лічильник
    return count;                        //функція повертає кількість чисел
}

7

(1 відповідей, залишених у Залізо)

raxp написав:

відновіть бутлоадер.

в двох словах так...

а якщо детально то... шукаємо будь який програматор і відповідний софт до нього
далі гуглимо ISP6 знаходимо такий роз'єм на платі, підключаємо відповідно 6 дротиків до програматора...
далі ідемо до папки де живе ARDUINO IDE далі в моєму випадку ідемо до
arduino-1.6.12\hardware\arduino\avr\bootloaders\caterina\Caterina-Leonardo.hex
і за допомогою програматора зашиваємо цей файлик, я прошивав її як звичану мегу32 тому що в USBasp більше немає ніяких інших цієї серії... в принципі якщо все зроблено правильно то відключаємо програматор і підключаємось нормально по USBдо плати і на цьому стандартно...
але тільки не в мене, довелось зашивати разів 10 з різними частотами і перемичками на платі, але по суті прошивка іде меньше секунди, потім зносити всі драйвери від ардуіно і ставити по новому, а також те що помітив що раніше ARDUINO IDE шила плату за допомогою програматора AVRISP mkll а зараз почала шитись тільки з ArduinoISP... якщо я не помиляюсь...

багато непотрібного тексту написав:

Всім привіт. Вчора закидав новий скетч на Arduino Leonardo і під час вивантаження з якогось дива віндовс надумав в цей самий час оновити драйвер (точніше я тикнув плату в не в той порт що завжди IDE знайшла плату я клікнув "Вивантажити" і під час цього вінда знайшла "новий пристрій" і почала встановлювати дрова)... в результаті тепер плату заглючило по повній... скетч не завантажило, тобто він не працює бо контроль роботи йшов по діоду 13 який після кожного нового циклу програми давав імпульс... думав проблема вінди, але зараз пересів за інший ПК проблема та сама.

Підключаю плату і IDE її одразу бачить (на другому ПК 10 вінда видавала повідомлення що не може розпізнати пристрій, а цей нормально бачить її) клікаю на Get Board Info і вона нормально видає всі данні, тобто можна виключити механічні несправності.
Діод L горить постійно (здається це той самий що на 13 порті). Натискаю reset діод з написом L моргає а потім тухне, дивно це якось, по суті під час підключення живлення і після ресета всі порти повинні мати той самий стан, але по факту це не так...

фотки

http://replace.org.ua/misc.php?action=pun_attachment&amp;item=1388&amp;download=0

Вивантаження проекту навіть не починається... проходить компілювання, далі пише "Вивантаження" але на платі жоден діод не подає ознаки життя хоча раніше під час "Вивантаження" діод L моргав весь час до кінця прошивки... і видає повідомлення avrdude: ser_open(): can't set com-state for "\\.\COM4"

купа помилок

processing.app.debug.RunnerException
    at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:159)
    at cc.arduino.UploaderUtils.upload(UploaderUtils.java:78)
    at processing.app.SketchController.upload(SketchController.java:707)
    at processing.app.SketchController.exportApplet(SketchController.java:680)
    at processing.app.Editor$DefaultExportHandler.run(Editor.java:2176)
    at java.lang.Thread.run(Thread.java:745)
Caused by: processing.app.SerialException: Помилка відкриття послідовного порту «COM4».
    at processing.app.Serial.touchForCDCReset(Serial.java:87)
    at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:143)
    ... 5 more
Caused by: jssc.SerialPortException: Port name - COM4; Method name - openPort(); Exception type - Port busy.
    at jssc.SerialPort.openPort(SerialPort.java:164)
    at processing.app.Serial.touchForCDCReset(Serial.java:81)
    ... 6 more
Сталась помилка при вивантаженні скетча
Exception in thread "Thread-75" java.util.ConcurrentModificationException
    at java.util.LinkedList$LLSpliterator.forEachRemaining(LinkedList.java:1239)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at cc.arduino.contributions.libraries.LibrariesIndexer.rescanLibraries(LibrariesIndexer.java:127)
    at cc.arduino.contributions.libraries.LibrariesIndexer.setLibrariesFolders(LibrariesIndexer.java:106)
    at processing.app.BaseNoGui.onBoardOrPortChange(BaseNoGui.java:828)
    at processing.app.Base.onBoardOrPortChange(Base.java:1301)
    at processing.app.Editor$DefaultExportHandler.run(Editor.java:2206)
    at java.lang.Thread.run(Thread.java:745)

...#27 повідомлення зробив так і в диспетчері пристроїв воно тепер не пише назву плати, а просто USB Serial Device

і ще в настройках IDE поставив галочки на додатковому звіті під час вивантаження і воно видало

нова купа помилок


Примусово скинути за допомогою 1200 біт/с відкривання/закривання порту COM4
PORTS {COM3, COM4, } / {COM3, COM4, } => {}
PORTS {COM3, COM4, } / {COM3, COM4, } => {}
Uploading using selected port: COM4
D:\Arduino\hardware\tools\avr/bin/avrdude -CD:\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega32u4 -cavr109 -PCOM4 -b57600 -D -Uflash:w:C:\Users\Dima\AppData\Local\Temp\arduino_build_801423/test_dimer_on_led_13.ino.hex:i

avrdude: Version 6.3, compiled on Sep 12 2016 at 17:24:16
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "D:\Arduino\hardware\tools\avr/etc/avrdude.conf"

         
         Using Port                          : COM4
         Using Programmer               : avr109
         Overriding Baud Rate           : 57600
         AVR Part                            : ATmega32U4
         Chip Erase delay                  : 9000 us
         PAGEL                                : PD7
         BS2                                   : PA0
         RESET disposition                 : dedicated
         RETRY pulse                        : SCK
         serial program mode            : yes
         parallel program mode         : yes
         Timeout                             : 200
         StabDelay                          : 100
         CmdexeDelay                     : 25
         SyncLoops                          : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0      9000  9000 0x00 0x00
           flash            65     6   128    0 yes     32768  128    256  4500  4500 0x00 0x00
           lfuse            0     0     0    0 no          1         0      0     9000  9000 0x00 0x00
           hfuse            0     0     0    0 no          1        0      0     9000  9000 0x00 0x00
           efuse            0     0     0    0 no          1        0      0     9000  9000 0x00 0x00
           lock             0     0     0    0 no          1         0      0     9000  9000 0x00 0x00
           calibration    0     0     0    0 no          1         0      0     0            0 0x00 0x00
           signature      0     0     0    0 no          3         0      0     0            0 0x00 0x00

         Programmer Type : butterfly
         Description     : Atmel AppNote AVR109 Boot Loader

Connecting to programmer: .avrdude: butterfly_recv(): programmer is not responding

avrdude: butterfly_recv(): programmer is not responding
Проблема вивантаження в плату. Зверніться до http://www.arduino.cc/en/Guide/Troubleshooting#upload для пошуку рішення.

8

(4 відповідей, залишених у HTML та CSS)

raxp написав:

ось запити клієнта-браузера і доведеться обробляти: при отриманні запиту на Index.html в url, читаємо з флешки текст з файлу - 'Index.html':

вперто не стартує з флешки... чи то флешка коцана, чи то руки криві, чи то лижі не їдуть...

вирішив проблему значно простіше, всього в одну стрічку, не знаю як раніше не додумався...

client.print("<meta http-equiv=\"refresh\" content=\"2;url=http://192.168.0.20\" />");

і оновлюється так швидко що здається температури міняються в реальному часі і кілька клієнтів не конфліктують і тицялки приліпив так що навантаженнями можна кляцати не тільки з сайту... тепер ще треба придумати навіщо це мені...

9

(4 відповідей, залишених у C++)

знайшов десь таку програмку

код + img
#include <windows.h>

/* This is where all the input to the window goes to */
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
    switch(Message) {
        
        /* Upon destruction, tell the main thread to stop */
        case WM_DESTROY: {
            PostQuitMessage(0);
            break;
        }
        
        /* All other messages (a lot of them) are processed using default procedures */
        default:
            return DefWindowProc(hwnd, Message, wParam, lParam);
    }
    return 0;
}

/* The 'main' function of Win32 GUI programs: this is where execution starts */
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 
{
    WNDCLASSEX wc; /* A properties struct of our window */
    HWND hwnd; /* A 'HANDLE', hence the H, or a pointer to our window */
    MSG Msg; /* A temporary location for all messages */

    /* zero out the struct and set the stuff we want to modify */
    memset(&wc,0,sizeof(wc));
    wc.cbSize         = sizeof(WNDCLASSEX);
    wc.lpfnWndProc     = WndProc; /* This is where we will send messages to */
    wc.hInstance     = hInstance;
    wc.hCursor         = LoadCursor(NULL, IDC_ARROW);
    
    /* White, COLOR_WINDOW is just a #define for a system color, try Ctrl+Clicking it */
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszClassName = "WindowClass";
    wc.hIcon       = LoadIcon(NULL, IDI_APPLICATION); /* Load a standard icon */
    wc.hIconSm  = LoadIcon(NULL, IDI_APPLICATION); /* use the name "A" to use the project icon */

    if(!RegisterClassEx(&wc)) {
        MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
        return 0;
    }

    hwnd = CreateWindowEx
       (WS_EX_CLIENTEDGE,
       "WindowClass","WTF is this?",
        WS_VISIBLE|WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, /* x */
        CW_USEDEFAULT, /* y */
        640, /* width */
        480, /* height */
        NULL,NULL,hInstance,NULL);

    if(hwnd == NULL) {
        MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
        return 0;
    }

    /*
        This is the heart of our program where all input is processed and 
        sent to WndProc. Note that GetMessage blocks code flow until it receives something, so
        this loop will not produce unreasonably high CPU usage
    */
    while(GetMessage(&Msg, NULL, 0, 0) > 0) { /* If no error is received... */
        TranslateMessage(&Msg); /* Translate key codes to chars if present */
        DispatchMessage(&Msg); /* Send it to WndProc */
    }
    return Msg.wParam;
}

відкриває таке:
http://replace.org.ua/misc.php?action=pun_attachment&amp;item=1381&amp;download=0

як я розумію воно відкриває звичайну віконну аплікацію?
як туди закинути якусь графіку? як з нею працювати? як сховати консоль?

10

(4 відповідей, залишених у HTML та CSS)

Ostapchuk написав:

Думаю, що така реалiзацiя малась на увазi ?)
https://jsfiddle.net/doow53d5/

хм) схоже на то) тільки по діагоналі з нижнього лівого краю до верхнього правого

11

(4 відповідей, залишених у HTML та CSS)

raxp

доцільніше не використовувати буратіно і шілди взагалі (енергоспоживання, габарити, ціна). Все те ж саме можна реалізувати на одному модулі ESP за допомогою Lua на базі SoC ESP8266 за 1.65$, в тому числі:
- сайт з кнопками http://raxp2.blogspot.com/2015/10/dio-e … wi-fi.html
- температурними датчиками http://raxp2.blogspot.com/2015/03/wi-fi-esp8266.html + http://raxp2.blogspot.com/2016/10/esp8266-wi-fi.html

що потрапило в руки тим і бавлюсь, можливо і доцільніше, а можливо і ні... як на мене ардуінка значно простіша і на ню можна навішати купу всякої всячини...

може я дуже туплю.. але в мене ніяк не виходить відкрити сторінку з флешки...
наприклад я маю на SD флешці сайт Index.html ... який чином має виглядати код щоб я по айпішнику плати просто відкривав цей сайт... тобто не обробляємо ніякі запити нічим не керуємо, просто підключили в мережу і відкрився сайт...

я не розумію яким чином це відбувається і поки що про GET i POST запити можна і не згадувати

бо я намагався розвивати сайт і в мене просто перестало вантажити з написам "stack Overflow"
в ню просто не влазить вже більше кода на її скромні 32кб а з флешки просто глухо, ніяк не виходить, тобто мені потрібно якось зробити окремо сайт і окремо код, бо хардкодити HTML в C++ це не по феншую...

12

(4 відповідей, залишених у HTML та CSS)

koala написав:

Що не так?
https://jsfiddle.net/r5nzmkfg/

не так те що воно не збільшується по дорозі
але тут http://codepen.io/anon/pen/dpaqXy
воно збільшується але не переміщується
а якщо розкоментити пересування то навпаки переміщується але не збільшується

13

(4 відповідей, залишених у HTML та CSS)

Вітаю. На днях потрапила в руки плата Arduino з мікроконтролером ATmega32 і модуль W5100.
Разом цей бутерброд виглядає так: http://tehnopage.ru/_pu/1/28347233.jpg
Одразу виникла ідея зробити на його базі сервер щоб через звичайний браузер можна було наприклад моніторити температуру в приміщенні і зовні а також керувати певними навантаженнями.

чистий HTML код вийшов такий:

HTML

<!DOCTYPE HTML5>
<html>
    <head>
        <title>LED switch & Temperatures</title>
        <meta charset=utf-8>

CSS

    <style>
            body{
                background-color: #ccc;
                text-align: center;
            }

            button {
                padding: 15px 25px;
                font-size: 24px;
                text-align: center;
                cursor: pointer;
                outline: none;
                color: #000;
                border: none;
                border-radius: 15px;
                box-shadow: 0 9px #555;
                border: 2px solid #555;
            }
            button:hover {
                color: #330;
                text-shadow: 0px 0px 35px #ff5, 0px 0px 35px #ff5, 0px 0px 35px #ff5;
                border: 2px solid #ff5;
                box-shadow: 0 9px #665;
            }
            button:active {
                color: #ff0;
                box-shadow: 0 3px #333;
                transform: translateY(6px);
                border: 2px solid #ff5;
            }

            H1{
                color: #000;font-family:  Georgia, 'Times New Roman', Times, serif;
                margin-top: 0px;
            }

            p{font-size: 24px; float: center;}

            div {
                margin: 10px;
                high: 50px;
                background: #fff;
                border: 1px dashed #000;
                padding: 15px;
                font: 18pt Tahoma;
            }
        </style>

    </head>
    <body>
        <!--<hr style=color:#ccc>-->
        <h1>WEB сервер "Ардуіно" 192.168.0.20</h1>
        <div>
            <h1>Керування навантаженнями</h1>
            <p>
                <a href=\"/$2\"><button style=background-color:#5c5>LED 1</button></a>
                <a href=\"/$3\"><button style=background-color:#c55>LED 2</button></a>
                <a href=\"/$5\"><button style=background-color:#c55>LED 3</button></a>
                <a href=\"/$7\"><button style=background-color:#c55>LED 4</button></a>
            </p>
        </div>
        <div style=color:#000><h1>Датчики температури</h1>T1:&numsp;23.50°С&emsp;T2:&numsp;23.50°С&emsp;T3:&numsp;23.50°С&emsp;T4:&numsp;23.50°С</div>
</html>

далі я це все закинув в сішний код для ардуінки:

HTML + C
ініціалізація і настройка плати і всяка всячина, кому цікаво

#include <SPI.h>             
#include <Ethernet.h>       
#include <OneWire.h>
#include <DallasTemperature.h>

#define LED_1 8
#define LED_2 11
#define LED_3 9
#define LED_4 12
bool led1_state = false;
bool led2_state = false;
bool led3_state = false;
bool led4_state = false;

#define ONE_WIRE_BUS 2
#define TEMPERATURE_PRECISION 9

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress TSensor[10];

short int DeviceCount = 0;
short int index;

boolean newInfo = 0;
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 };
IPAddress ip(192,168,0,20);
EthernetServer server(80);

void setup(void)
{
  pinMode(LED_1, OUTPUT);
  pinMode(LED_2, OUTPUT);
  pinMode(LED_3, OUTPUT);
  pinMode(LED_4, OUTPUT);
  Ethernet.begin(mac, ip);
  server.begin();
  sensors.begin();
  oneWire.reset_search();
  DeviceCount=sensors.getDeviceCount();
  for(index=0; index<DeviceCount; index++)
  {
    sensors.getAddress(TSensor[index], index);
    sensors.setResolution(TSensor[index], TEMPERATURE_PRECISION);
  }
}

void loop(void)
{
  EthernetClient client = server.available();         //приймаємо данні які відправляє клієнт
  if(client)
  {                                                   //якщо запит закінчується пустою стрічкою
    boolean currentLineIsBlank = true;                //ставим мітку кінця запиту
    while (client.connected())                        //доки є підключення до клієнта
    {                     
      if (client.available())                         //якщо клієнт активний
      {                       
        char c = client.read();                       //зчитуємо передану інфу в змінну "с"
                                                   
        if(newInfo && c == ' ')
        {                                             //якщо змінна нової інфи = 1 і "с" пуста стрічка
          newInfo = 0;                                //то обнуляємо змінну нової інфи
       
        if(c == '$')
        {                                             //якщо в "с" записаний $
                                                      //ставиму змінну нової інфи як true
          newInfo = 1;                               
        }
                                         
        if(newInfo == 1){             //перевіряємо яке число іде після $   якщо є нова інформація             
            switch (c)
            {
                case '1':
                  digitalWrite(LED_1, HIGH);
                  led1_state = true;
                  break;
                case '2':
                  digitalWrite(LED_1, LOW);
                  led1_state = false;                 
                  break;

той самий код ще 4 рази тільки на інших портах

                case '3':
                  digitalWrite(LED_2, HIGH);
                  led2_state = true;                 
                  break;
                case '4':
                  digitalWrite(LED_2, LOW);
                  led2_state = false;                 
                  break;
                case '5':
                  digitalWrite(LED_3, HIGH);
                  led3_state = true;
                  break;
                case '6':
                  digitalWrite(LED_3, LOW);
                  led3_state = false;                 
                  break;
                case '7':
                  digitalWrite(LED_4, HIGH);
                  led4_state = true;                 
                  break;
                case '8':
                  digitalWrite(LED_4, LOW);
                  led4_state = false;                 
                  break;
                default:
                  break;

            }   
        }
        if (c == '\n') {                              //якщо "с" дорівнює символу нової стрічки
          currentLineIsBlank = true;                  //починаємо нову стрічку
        }
        else if (c != '\r') {                         //інакше якщо "с" дорівнює поверненню курсора на початок стрічки
          currentLineIsBlank = false;                 //отримуємо символ стрічки
        }

        if (c == '\n' && currentLineIsBlank) {        //виводимо HTML сторінку
          client.println("HTTP/1.1 200 OK");         
          client.println("Content-Type: text/html");
          client.println("Connection: close"); 
          client.println("Refresh: 5");              //автоматичне оновлення кожні 5 секунд
          client.println();
          sensors.requestTemperatures();       //запит температур від датчиків
          client.println("<!DOCTYPE HTML>");         
          client.println("<html><head>");                   
          client.print("<title>LED switch & Temperatures</title>");   
          client.print("<meta charset=utf-8>"); 

CSS + всяка всячина

          client.print("<style>body{ background-color: #ccc; text-align: center;}</style>");
         
          client.print("<style>button {background-color:#c55; padding: 15px 25px; font-size: 24px;  text-align: center; cursor: pointer; outline: none; color: #000; border: none; border-radius: 15px; box-shadow: 0 9px #555; border: 2px solid #555;}");
          client.print("button:hover { color: #330;  text-shadow: 0px 0px 35px #ff5, 0px 0px 35px #ff5, 0px 0px 35px #ff5; border: 2px solid #ff5; box-shadow: 0 9px #665;}");
          client.print("button:active { color: #ff0; box-shadow: 0 3px #333; transform: translateY(6px); border: 2px solid #ff5;}</style>");
          client.print("<style>  H1{ color: #000;font-family:  Georgia, 'Times New Roman', Times, serif; margin-top: 0px;}</style>");
         
          client.print("<style>p{font-size: 24px; float: center;}</style>");
          client.print("<style>  div { margin: 10px; high: 50px; background: #fff; border: 1px dashed #000; padding: 15px; font: 18pt Tahoma;}</style>");

         client.print("</head><body><h1>WEB сервер ''Ардуіно'' 192.168.0.20</h1><div><h1>Керування навантаженнями</h1><p>");     

 
         
          if(led1_state){
            client.print("<a href=\"/$2\"><button style=background-color:#5c5>LED 1</button></a>");
          }else{
            client.print("<a href=\"/$1\"><button>LED 1</button></a>");
          }
          if(led2_state){
            client.print("<a href=\"/$4\"><button style=background-color:#5c5>LED 2</button></a>");
          }else{
            client.print("<a href=\"/$3\"><button>LED 2</button></a>");
          }
          if(led3_state){
            client.print("<a href=\"/$6\"><button style=background-color:#5c5>LED 3</button></a>");
          }else{
            client.print("<a href=\"/$5\"><button>LED 3</button></a>");
          }
          if(led4_state){
            client.print("<a href=\"/$8\"><button style=background-color:#5c5>LED 4</button></a>");
          }else{
            client.print("<a href=\"/$7\"><button>LED 4</button></a>");
          }         
           
          client.println("</p></div><div style=color:#000>");
          client.println("<h1>    </h1>");
          client.println("<h1>Датчики температури</h1>");
          client.println("");
          for(index=0; index<DeviceCount; index++)
          {
            client.println("Темп.№");
            client.print(index+1);
            client.println(":&numsp;");
            client.print(sensors.getTempC(TSensor[index]));
            client.println("°С&emsp;");
          }
          client.println("</div></body></html>");                  //закриваємо тег HTML

          break;                                      //вихід з циклу
        }
     
      }
     
    }
    delay(1);                                          //затримка на отримання нових даних
    client.stop();                                     //закриваємо з'єднання
  }
}]

цікава іграшка була до поки я не відкрив цей сайт в двох окремих вкладках...
суть в чому, по дефолту в CSS стилях я прописав що кнопка червона, далі якщо я отримав з сайту якусь цифру то відповідно я на порт подаю високий рівень і далі в залежності від цього рівня я відсилаю на сторінку той  чи інший код і якщо порт активний то я примусово приписую кнопці зелений колір(як бачте по синтаксису коду на сі пряміше прописати колір не виходило)...

if(led1_state){
            client.print("<a href=\"/$2\"><button style=background-color:#5c5>LED 1</button></a>");
          }else{
            client.print("<a href=\"/$1\"><button>LED 1</button></a>");

а по натисканню кнопки першого діода коли він вимкненийя маю в URL 192.168.0.20/$2   і відповідно 192.168.0.20/$1 якщо він увімкнений...

а тепер ми маємо дві вкладки на якій ми натиснули ту саму кнопку і в одній вкладці ми маємо 192.168.0.20/$2 а в іншій 192.168.0.20/$1 і обидві вкладки автоматично оновлюються кожні 5 секунд (це потрібно для оновлення температур в реальному часі)

і навантаження починає само по собі то вмикатись то вимикатись (а навантаження це може бути наприклад світло в кімнаті)

Як зробити так щоб після автоматичного оновлення сторінки там в мене після IP адреси залишалось пусте поле?

і ще може хто знає як зробити адекватніше запуск сайту з флешки як ось тут http://tehnopage.ru/ethernet-arduino-control їхній код в мене не працює, а розібратись що і як в них працює я теж не можу, але в них адекватніше бо оновлюється тільки потрібний елемент сторінки а не вся сторінка і весь сайт живе на флешці...

14

(6 відповідей, залишених у C++)

-=ЮрА=- написав:

як мені цей текст з консолі записати в якийсь символьний масив чи щось подібне?

#include <windows.h> 
 
int main (){system("IPconfig > log.txt");}

дякую, все працює, тільки не зовсім прямий варіант... тепер щоб проаналізувати що воно мені видало треба відкривати файл... хоча головне що воно працює як мені і потрібно.

основна суть в тому що є багато різних корисних команд для консолі які просто якщо не використовувати часто просто забувають, хочу зробити маленьку програмку яка б собі виконувала все що потрібно не вникаючи в команди консолі

15

(1 відповідей, залишених у C++)

ну якщо можна то потрібен хоча б приклад коду + перевірити чи там немає символів кирилицею
cout << "   " ; це дві різні команди сout << "   " ; хоча на вигляд однакові, одна працює друга ні...
буває здоровенний файл перестає компілитись просто через те що не подивившись на розкладку клавіатури починаєш правити файл і коли компілиш IDE не рідко на такі помилки вказує неправильну стрічку
http://www.theithelper.ru/Tools/1100 ось сайт який підсвітить символи кирилиці в коді якщо вони там є
Qt хороший дебагер але особисто я ще маю завжди під рукою DevC++ і Code::Blocks бо розумний інструмент це добре але часом потрібна просто кувалда і лом...

16

(6 відповідей, залишених у C++)

Вітаю. Маю такий простенький код...

#include <windows.h> 

main (){system("IPconfig");}

Отримую в консолі такий текст

Wireless LAN adapter:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : ffff::ffff:ffff:ffff:ffff%10
   IPv4 Address. . . . . . . . . . . : 192.168.0.104
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.0.1

як мені цей текст з консолі записати в якийсь символьний масив чи щось подібне?

17

(1 відповідей, залишених у C++)

Вітаю
Навчаюсь писати консольні програми на Сі

#include <windows.h>
#include <locale.h>

main()
{
    /*windows.h*/
    SetConsoleTitle ("NameWind");     //Назва в заголовку консольного вікна
    SetConsoleCP(866);             //Встановлює таблицю ASCII станндарту cp866 Unicode в поток введення
    SetConsoleCP(1251);         //Встановлює таблицю ASCII станндарту cp1251 Unicode в поток введення
    SetConsoleOutputCP(866);    //Встановлює таблицю ASCII станндарту cp1251 Unicode в поток виведення
    SetConsoleOutputCP(1251);    //Встановлює таблицю ASCII станндарту cp1251 Unicode в поток виведення
    
    system("mode con cols=100 lines=35");     //Встановлює прозмірність консольного вікна
    system("color 0F");                //Змінює колір консолі перше число це фон друге текст
    
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); //    ???
    SetConsoleTextAttribute(hStdOut, 0xFB);    //встановлює колір тексту і фону який буде друкуватись
    printf("текст 0xFB\n");
    SetConsoleTextAttribute(hStdOut, 0xF5);
    printf("текст 0xF5\n");    
    SetConsoleTextAttribute(hStdOut, 0xB8);
    printf("текст 0xB8\n");    
    SetConsoleTextAttribute(hStdOut, 0x69);    
    printf("текст 0x69\n");
    SetConsoleTextAttribute(hStdOut, 0x0F);    
    
    /*locale.h*/    
    setlocale(LC_CTYPE, "ukr");                //   ???
}

які ще є команди щоб встановлювати параметри виводу і вигляду консолі? як наприклад змінити шрифт на піксельний? чи друкувати якесь слово курсивом чи жирним? як змінити піктограму перед назвою файла на якусь свою?

і ще, як на чистому Сі прибрати курсор? знайшов приклади тільки на С++...

маленька програмка яка виводить всю кольорову гамуу консолі і таблицю ASCII кодів
#include <windows.h>

main()
{
    int i=0,s=0,z=0;
    system("mode con cols=154 lines=57");
    
    int y=16,x=16;
    int Q[y][x];
    for(i=0;i<x;i++)
    {
        for(s=0;s<y;s++)
        {
            Q[s][i]=z;
            z++;
        }
    }
        
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    
    printf("%c",218);
    for(i=0;i<150;i++)
    {
        printf("%c",196);
    }
    printf("%c\n",191);
    
    for(i=0;i<y;i++)
    {
        printf("%c   ",179);
        for(s=0;s<x;s++)
        {
            SetConsoleTextAttribute(hStdOut, Q[i][s]);
            printf("   %x    ", Q[i][s]);
        //    printf("%i",Q[i][s]);
        }
        SetConsoleTextAttribute(hStdOut, 0x0F);
        printf("    %c",179);
        printf("\n");
    }
                
    printf("%c",192);
    for(i=0;i<150;i++)
    {
        printf("%c",196);
    }
    printf("%c\n",217);    

//-------------------------------------------------------------//

    SetConsoleOutputCP(866);
    int c=0,v=0;
    i=0,s=0;
    int b=33;
    
            printf("%c",218);
            for(i=0;i<150;i++)
            {
                printf("%c",196);
            }
            printf("%c",191);
            printf("\n%c ASCII cp1251",179);
            for(i=0;i<137;i++)
            {
                printf(" ");
            }
            printf("%c\n%c ",179,179);        
            for(i=0;i<149;i++)
            {
                printf(" ");
            }
            printf("%c\n%c ",179,179);
    
    SetConsoleOutputCP(1251);
    do{
        SetConsoleTextAttribute(hStdOut, 0x6);
        printf(" %i  ",b);
        SetConsoleTextAttribute(hStdOut, 0xB);
        printf("%c   ",b);
        SetConsoleTextAttribute(hStdOut, 0x0F);
        ++b;
        ++c;
        ++v;
        if(v==15)
            {
                SetConsoleOutputCP(866);
                printf("%c\n%c",179,179);
                v=0;
                SetConsoleOutputCP(1251);
            }
        if(b<100)
            {
                printf(" ");
                
            }
    }
    while(c!=223);
    SetConsoleOutputCP(866);

            printf("                    %c\n",179);    
            printf("%c",192);
            for(i=0;i<150;i++)
            {
                printf("%c",196);
            }
            printf("%c",217);    
            printf("\n");
            
//--------------------------------------------------------------//
            
            printf("%c",218);
            for(i=0;i<150;i++)
            {
                printf("%c",196);
            }
            printf("%c",191);
    
    c=v=s=0;b=33;

            printf("\n%c ASCII cp866 ",179);        
            for(i=0;i<137;i++)
            {
                printf(" ");
            }
            printf("%c\n%c ",179,179);
            for(i=0;i<149;i++)
            {
                printf(" ");
            }
            printf("%c\n%c ",179,179);
    
    do
    {
        SetConsoleTextAttribute(hStdOut, 0x6);
        printf(" %i  ",b);
        SetConsoleTextAttribute(hStdOut, 0xB);
        printf("%c   ",b);
        SetConsoleTextAttribute(hStdOut, 0x0F);
        ++b;
        ++c;
        ++v;
        if(v==15)
            {
                printf("%c\n%c",179,179);
                v=0;
            }
        if(b<100)
            {
                printf(" ");
                
            }
    }
    while(c!=223);
    
            printf("                    %c\n",179);    
            printf("%c",192);
            for(i=0;i<150;i++)
            {
                printf("%c",196);
            }
            printf("%c",217);
    
    printf("\n");

    system("pause");
}