Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Управление светодиодами на ноутбуке ASUS L3C

mike
24 октября 2005 года

На ноутбуках ASUS, серии L3 есть четыре светодиода.

  • Зеленый - питание или спящий режим;
  • Условно красный (скорее оранжевый) - зарядка;
  • Синий - новая почта;
  • Условно желтый (скорее оранжевый) - WIFI.

Первый два работают всегда и у всех. Скорее всего, программно с ними вообще нельзя ничего сделать. Я не смог подобрать номер порта для них.

Синий светодиод работает только если установлена специальная программа, которую предоставляет производитель, и только при использовании Outlook.

Желтый работает, если есть WI-FI. В моей модели его нет.

Негоже терять такие замечательные сигнализаторы, подумал я, и прикрутил их к The Bat! (особенно с учетом того, что их видно даже при закрытой крышке).

Ниже приведен код консольной программки, написанной на Borland C++ Builder.

//---------------------------------------------------------------------------
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused

#include <windows.h>
#include <shlobj.h>
#include <stdio.h>

#include <windows.h>
#include <shlobj.h>

HANDLE ATKACPIhandle;

int CtrlACPI(int code, int hasArg, int arg)
{
	long bytes = 0;
	long inbuf[5];
	struct cmbuf {
		short cmds[2];
		long cm2;
	} cbuf;
	long outbuf[192];
	int ret;

	cbuf.cmds[0] = 0;
	cbuf.cmds[1] = 4;
	cbuf.cm2 = arg;
	inbuf[0] = 2;
	inbuf[1] = code;
	inbuf[2] = hasArg;
	inbuf[3] = 8 * hasArg;
	inbuf[4] = (long)&cbuf;

	ret = DeviceIoControl(ATKACPIhandle, 0x222404, inbuf, sizeof(inbuf),
		outbuf, sizeof(outbuf), (unsigned long*)&bytes, NULL);
	return ret;
}

WNDCLASS wndclass;

LRESULT CALLBACK wndproc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	int ret;
	switch(uMsg) {
	case WM_DESTROY:
		PostQuitMessage(0);
		ret = 0;
		break;
	default:
		ret = DefWindowProc(hwnd,uMsg,wParam,lParam);
		break;
	}
	return ret;
}

int main(HINSTANCE hInstance, HINSTANCE hPrevInst, PSTR cmdLine,
	int iCmdShow)
{
	FILETIME stamp = {0};
	long old = -1, count;
	HWND hwnd;
	HKEY UnreadMailKey;
	HANDLE KeyEvent;

	wndclass.hInstance = hInstance;
	wndclass.lpszClassName = "hyc";
	wndclass.lpfnWndProc = wndproc;

	do {

		if (RegisterClass(&wndclass) == 0 ) break;

		hwnd = CreateWindow("hyc", "hyc", WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT, CW_USEDEFAULT,
			CW_USEDEFAULT, CW_USEDEFAULT,
			NULL, NULL, wndclass.hInstance, NULL);

		if (!hwnd) break;

		ATKACPIhandle = CreateFile("\\\\.\\ATKACPI",
			GENERIC_READ|GENERIC_WRITE,
			FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING,
			0, NULL);

		if (!ATKACPIhandle) break;

		for (;;) {
    		CtrlACPI(0x44454c57, 1, 1);
    		CtrlACPI(0x44454c4d, 1, 1);
            Sleep(100);
    		CtrlACPI(0x44454c57, 1, 0);
    		CtrlACPI(0x44454c4d, 1, 0);
            Sleep(100);
			}
	} while(0);
return(0);
}

Программка управляется из командной строки:

asusled.exe mail on  - включить синий светодиод
asusled.exe mail off - выключить синий светодиод
asusled.exe wifi on  - включить желтый светодиод
asusled.exe wifi off - выключить желтый светодиод

Скачать рабочую версию [exe, 52Kb]

В TheBat! необходимо настроить "сортировщик писем" так, чтобы при приходе новой почты запускалась программа "asusled.exe mail on", и при прочтении писем - "asusled.exe mail off".

Два разных светодиода я использую для двух разных почтовых ящиков.

Решение для почтового клиента Mozilla (FireBird) можно найти здесь. [zip, 6Kb]

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
43K
03 октября 2008 года
АлександрЕсин
0 / / 03.10.2008
Мне нравитсяМне не нравится
7 октября 2008, 11:04:08
Mike,помоги мне пожалуйста научиться передавать информацию на LPT порт, на С++ Builder 2007.
2.
1.6K
20 марта 2003 года
Grom2025
82 / / 20.03.2003
Мне нравитсяМне не нравится
25 апреля 2007, 15:10:15
Отлично! Работает на ноуте ASUS A3000
Сенкс автору!
3.
4
01 октября 2002 года
mike
3.7K / / 01.10.2002
Мне нравитсяМне не нравится
9 июня 2006, 23:10:54

Цитата:
Mike, а не подкинешь остальные коды драйвера ATK?


Неа, нет у меня их.

4.
19K
09 июня 2006 года
Drivosek
0 / / 09.06.2006
Мне нравитсяМне не нравится
9 июня 2006, 18:56:22
Mike, а не подкинешь остальные коды драйвера ATK?
5.
Аноним
Мне нравитсяМне не нравится
3 марта 2006, 12:40:52
На ASUS M2400A схожем по наличию такихже диодов, внешнему виду и отсутствием wifi-карточки, не работает программа.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог