RS232 book cover

Twój adres IP to: 54.196.42.8
Przeglądarka: CCBot/2.0 (https://commoncrawl.org/faq/)


OE PowerTool
Wersja stabilna: 4.5.1

Ludwig von Mises Institute

Wysyłanie sekwencji CRLF w PuTTY

20 stycznia 2018

Urządzenia i moduły komunikacyjne często są zarządzane i konfigurowane za pomocą tekstowych komend AT. Dotyczy to np. popularnych modułów HC-05 (Bluetooth) i ESP8266 (WiFi). Aby te komendy wydawać z komputera, potrzebny jest odpowiedni program terminalowy obsługujący port szeregowy. Takim programem jest np. PuTTY, obsługujący też protokoły SSH i telnet, do pracy za pomocą których jest używany najczęściej.

Z PuTTY jest jednak pewien problem przeszkadzający w używaniu go do wydawania komend AT. Otóż wymienione moduły wymagają, aby komendy AT były kończone przejściem do nowej linii wyrażonym za pomocą sekwencji CR+LF (carriage return i line feed). Znak CR to przejście na początek linii, LF to przejście do linii niższej. Razem oznaczają więc przejście na początek kolejnej linii. Znaki te są bajtami o wartościach odpowiednio 13 i 10 (0Dh i 0Ah). Często, np. w języku C, są zapisywane za pomocą sekwencji \r\n.

Tymczasem PuTTY przeznaczony jest przede wszystkim do pracy na zdalnym systemie. W związku z tym wysyła po prostu naciśnięte klawisze (z wyjątkiem klawiszy specjalnych, takich jak Shift, Alt czy Ctrl). Jeśli wciśniemy Enter, PuTTY nie wyśle znaków CR i LF a jedynie CR. Jak więc wysłać brakujący znak LF? Otóż możemy wcisnąć kombinację Ctrl+J. Rozwiązanie to jednak nie jest zbyt wygodne, gdyż wymaga wciskania tej kombinacji po każdym Enterze. Najwygodniej byłoby, gdyby można było wymusić wysyłanie CRLF dla Entera. PuTTY posiada różne opcje konfiguracyjne związane z klawiaturą, można np. skonfigurować klawisze Backspace, Home czy End. Nie ma jednak ustawienia dla Entera. W związku z tym trzeba wysyłanie CRLF dodać do PuTTY modyfikując jego kod źródłowy i kompilując go samodzielnie. Ponieważ źródła PuTTY są publicznie dostępne, skorzystałem z tej możliwości i zmodyfikowałem PuTTY o możliwość wysyłania CRLF dla Entera. Wersję tę można ściągnąć tutaj: putty-crlf.zip

PuTTY z obsługą CRLF


Osuszanie Polski w Windows XP

28 kwietnia 2017

W Windows 2000 oraz Windows XP występuje ciekawy błąd w okienku ustawień strefy czasowej: w miejscu Polski jest... morze. Skąd się to wzięło? Otóż mapka nie jest rysowana od razu za jednym zamachem. Algorytm jest taki, że na pustej wodnej przestrzeni rysowane są obszary odpowiadające kolejnym strefom czasowym. Gdy Microsoft wydawał Windows 95, Polska miała własną strefę czasową. Jednak później uchwalono przepisy synchronizujące nasz czas letni i zimowy z sąsiednimi krajami, a programiści odpowiedzialni za mapkę nie do końca sobie z tym poradzili. Usunęli starą polską strefę czasową ale nie podpięli rysowania Polski pod strefę Sarajewa, Skopie i Zagrzebia. W rezultacie Polska zniknęła pod wodą.

Morze Polskie

Od Visty mapki świata w ustawieniach strefy czasowej już nie ma, problem rozwiązał więc się sam. Co jednak z Windows XP? Mało kto już go używa, ale jeśli ktoś chciałby poprawić mapkę, to jak się okazuje, jest to bardzo proste do zrobienia. W tym celu w rejestrze, w kluczu HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Central European Standard Time trzeba zmodyfikować wartość MapID z 2,3 na 2,65. Wtedy mapka się naprawia. Po edycji rejestru restart nie jest wymagany, efekt widać od razu po ponownym otwarciu okienka ustawień.

Morze Polskie


Intro 4k elevated

27 marca 2017

Elevated to mające niecałe 4kB intro grupy r g b a. Realizm wygenerowanej grafiki przez tak mały program robi bardzo duże wrażenie, szczególnie że intro trwa ponad 3 minuty. Intro można obejrzeć na YouTube lub też uruchomić na swoim komputerze. Wersje dla różnych rozdzielczości ekranu można pobrać ze strony twórców. Gdyby dany plik .exe się nie uruchamiał, trzeba go zrekompresować kompresorem Crinkler korzystając z przełącznika /recompress, np.

crinkler.exe /recompress elevated_1280x1024.exe


Zmiana daty plików na podstawie zawartości

27 marca 2017

Pewnego razu na usenetowej grupie pl.comp.os.ms-windows.winnt pojawiło się pytanie o sposób na zmianę daty modyfikacji plików na datę, która jest zapisana w pierwszych pięciu bajtach tych plików. Pliki te mają rozszerzenie .dr1. Przykładowo plik zaczynający się od bajtów 0E 04 05 16 30 (szesnastkowo) powinien otrzymać datę 2014/04/05 22:48:00. Operację taką można wykonać np. skryptem napisanych w PowerShell. Przykładowy skrypt przetwarzający pliki w bieżącym katalogu, może wyglądać tak:

$files = ls "*.dr1"
foreach ($f in $files) {
    $reader = New-Object IO.FileStream $f, 'Open'
    [byte[]]$buffer = new-object byte[] 5
    $len = $reader.Read($buffer, 0, $buffer.Length)
    $reader.Close()
    $d = new-object DateTime ($buffer[0] + 2000), $buffer[1], $buffer[2], $buffer[3], $buffer[4], 0
    $f.LastWriteTime = $d
}
        


Firmware dla AVT-5388

1 lutego 2016

Programatory ISP dla mikrokontrolerów AVR, będące klonami AVRISP mkII, wymagają aktualizacji firmware aby mogły działać z Atmel Studio 7. Jednym z takich programatorów jest np. AVT-5388. Zaktualizowany firmware można pobrać tutaj. Upgrade wykonuje się programem FLIP. Po aktualizacji trzeba jeszcze zainstalować sterownik libusb-win32 programem Zadig.


Przekierowanie portów pod Windows

19 lipca 2015

System Windows posiada wbudowaną funkcję przekierowywania portów. Połączenia przychodzące na dany interfejs sieciowy komputera mogą być przekierowywane na ten sam lub inny port tego samego lub innego komputera. Podobnie jak inne opcje sieciowe, przekierowanie portów wykonuje się narzędziem netsh, a dokładniej netsh interface portproxy. Przykładowe dodanie przekierowania wygląda następująco:

netsh interface portproxy add v4tov4 listenport=8080 listenaddress=192.168.1.2 connectport=80 connectaddress=192.168.1.99

Tutaj na karcie sieciowej o adresie IP 192.168.1.2 komputera tworzone jest przekierowanie z portu 8080 na port 80 komputera o adresie 192.168.1.99. Parametr v4tov4 oznacza, że po obu stronach wykorzystywany jest protokół IPv4. Obsługiwany jest również protokół IPv6 i wtedy dostępne sa kombinacje v4tov6, v6tov4 i v6tov6. Aby skasować przekierowanie, używamy opcji delete i podajemy źródłowy port i IP przekierowania:

netsh interface portproxy delete v4tov4 listenport=8080 listenaddress=192.168.1.2

Przekierowania, podobnie jak normalna komunikacja sieciowa, wymagają odpowiednich reguł przepuszczających na firewallu.