Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Измерительное оборудование Осциллографы, мультиметры, анализаторы и другая измерительная техника необходимая каждому разработчику.

 
Опции темы
Непрочитано 09.03.2010, 23:12  
chernovpit
Частый гость
 
Регистрация: 07.03.2010
Сообщений: 33
Сказал спасибо: 204
Сказали Спасибо 28 раз(а) в 24 сообщении(ях)
chernovpit на пути к лучшему
По умолчанию Re: Компьютерные приборы с использованием звуковой карты

прибор используется только для визуального наблюдения
Реклама:
chernovpit вне форума  
Непрочитано 09.03.2010, 23:54  
chernovpit
Частый гость
 
Регистрация: 07.03.2010
Сообщений: 33
Сказал спасибо: 204
Сказали Спасибо 28 раз(а) в 24 сообщении(ях)
chernovpit на пути к лучшему
По умолчанию Re: Компьютерные приборы с использованием звуковой карты

[IMG][/IMG]
chernovpit вне форума  
Непрочитано 10.03.2010, 10:33  
Electric75
Почётный гражданин KAZUS.RU
 
Регистрация: 17.01.2007
Адрес: ХМАО-Югра
Сообщений: 4,340
Сказал спасибо: 539
Сказали Спасибо 1,053 раз(а) в 769 сообщении(ях)
Electric75 на пути к лучшему
По умолчанию Re: Компьютерные приборы с использованием звуковой карты

chernovpit,
Это что за схема?
Electric75 вне форума  
Непрочитано 10.03.2010, 13:32  
Servk
Прописка
 
Регистрация: 30.01.2010
Сообщений: 154
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
Servk на пути к лучшему
По умолчанию Re: Компьютерные приборы с использованием звуковой карты

Сообщение от eddy Посмотреть сообщение
Так я Вам уже и написал выше. Я работаю только в Linux, чего и Вам советую: разработка программного обеспечения намного проще, чем в винде. И не нужно искать подпольные "недокументированные системные вызовы".
P.S. Эти две строчки можно просто завернуть в system().
Замечательно что так все просто. Прогрессивная общественность ждет от Вас готовую программу, можно и под Линукс

Последний раз редактировалось Servk; 10.03.2010 в 13:34. Причина: правка опечатки
Servk вне форума  
Непрочитано 10.03.2010, 14:52  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Компьютерные приборы с использованием звуковой карты

Пожалуйста. Вот простенькая программка, которой я тестировал звуковые карты на предмет реальной разрядности (в линейном участке характеристики ЦАП) и поддержки постоянки на АЦП. О результатах говорил уже где-то выше, не помню, приводил ли программку, на всякий случай вот она:
Код:
#include ‹stdio.h›
#include ‹stdlib.h›
#include ‹unistd.h›
#include ‹sys/types.h›
#include ‹sys/stat.h›
#include ‹fcntl.h›
#include ‹math.h›
#include ‹sys/time.h›
#include ‹error.h›
#include ‹string.h›

#include ‹sys/ioctl.h›
#include ‹sys/soundcard.h›
char* names[] = SOUND_DEVICE_NAMES;
double dtime(){
	struct timeval ct;
	struct timezone tz;
	gettimeofday(&ct, &tz);
	return (ct.tv_sec + ct.tv_usec/1e6);
}

void printnames(int mask){
	int i;
	for (i = 0; i ‹ SOUND_MIXER_NRDEVICES; i++){
		if(mask & (1‹‹i))
				printf("%s, ", names[i]);
	}
	printf("\n");
}

int main(int argc, char** argv){
	char filename[1024], channel=0;
	short bytes, bytes1, cntr, blksize;
	double time0, time;
	int mask, status, wavfile;
	int sampletype, samplesize, speed = 44100, bufsize;
	int mixer_dev, rec_dev, i;
	
	
	int fd = open("/dev/dsp", O_RDWR);
	int mix_fd = open("/dev/mixer", O_RDWR);
	
	if (ioctl(mix_fd, SOUND_MIXER_READ_DEVMASK, &mixer_dev) ‹ 0){
		perror("Unable to read mixer status");
		exit(111);
	}
	printf("Available devices (%d):", mixer_dev);
	printnames(mixer_dev);
	if (ioctl(mix_fd, SOUND_MIXER_READ_RECMASK, &rec_dev) ‹ 0){
		perror("Unable to read available record sources");
		exit(112);
	}
	if(rec_dev){
		printf("Available  record sources: ");
		printnames(rec_dev);
		rec_dev = SOUND_MASK_MIC;
		printf("Try to set record device: ");
		printnames(rec_dev);
		if (ioctl(mix_fd, SOUND_MIXER_WRITE_RECSRC, &rec_dev) ‹ 0){
			perror("Unable to set record sources");
			exit(113);
		}
		printf("Set record sources: ");
		printnames(rec_dev);
	}else printf("No record sources\n");
	if (ioctl(mix_fd, SOUND_MIXER_READ_STEREODEVS, &status) ‹ 0){
		perror("Unable to read available stereo devices");
		exit(114);
	}
	printf("Available stereo devices: ");
	printnames(status);
	
	status = (100‹‹8) | 100; // максимальная громкость на оба канала
	printf("Set volumes to max level\n");
	for (i = 0; i ‹ SOUND_MIXER_NRDEVICES; i++){
		mask = status;
		if(mixer_dev & (1 ‹‹ i)){
			if (ioctl(mix_fd, MIXER_WRITE(i), &mask) ‹ 0) {
				perror("Unable to set volume");
			}
			else
			printf("%s\t\t(%d)\t%d --- %d\n", names[i], i, (mask ›› 8) & 255, mask & 255);
		}
	}

	
	if (argc ‹ 2) strcpy(filename, "outp.wav");
	else strcpy(filename, argv[1]);
	if (ioctl(fd, (size_t) SNDCTL_DSP_RESET, 0) ‹ 0){
		perror("Unable to reset OSS driver");
		exit(1);
	}
	sampletype = AFMT_S16_LE;
	samplesize = 16;
	status = ioctl(fd, SNDCTL_DSP_SETFMT, &sampletype);
	if (status ‹ 0){
		perror("Unable to set the sample size");
		exit(3);
	}
	else printf("Sample size: %d\n", samplesize);
	mask = 1; // 1 - стерео, для моно - 0
	if (ioctl(fd, SNDCTL_DSP_STEREO, &mask) ‹ 0){
		perror("Unable to set stereo/mono");
		exit(4);
	}
	mask = speed;
	if (ioctl(fd, SNDCTL_DSP_SPEED, &mask) ‹ 0 || speed != mask) {
        	if (speed - mask › (mask * .01) || mask - speed › (mask * .01))
			speed = mask;
	}
	printf("Speed: %d\n", speed);
	ioctl (fd, SNDCTL_DSP_GETBLKSIZE, &mask);
	if (mask ‹ 4 || mask › 65536) {
		perror("Invalid audio buffer size");
		exit(5);
	}
	printf("Buffer size: %d\n", mask);
	bufsize = mask;
	if (ioctl(fd, (size_t) SNDCTL_DSP_SYNC, NULL) ‹ 0) {
		perror("Unable to sync dsp");
	}
	printf("samples\n");
	time0 = dtime();
	wavfile = open(filename, O_RDWR|O_TRUNC);
	blksize = speed / 2;
	do{
		time = dtime() - time0;
		//printf("time: %f\n", time);
		for (cntr = 0; cntr ‹ blksize; cntr++) {
		read(fd, &bytes, 2);
		read(fd, &bytes1, 2);
		printf("%d  %d  \r",bytes, bytes1);
			bytes = 0x8000 * cos((time + ((double)cntr)/blksize)* 440 * 2. * M_PI);
			bytes1 = 0;
			if (channel){
			write(fd, &bytes, sizeof(bytes));
			write(wavfile, &bytes, sizeof(bytes));
			}
			write(fd, &bytes1, sizeof(bytes));
			write(wavfile, &bytes1, sizeof(bytes));
			if (!channel){
			write(fd, &bytes, sizeof(bytes));
			write(wavfile, &bytes, sizeof(bytes));
			}
		}
		channel = !channel;
		ioctl(fd, (size_t) SNDCTL_DSP_SYNC, NULL);
	}
	while(1);// time ‹ 5);
	close(wavfile);
	close(fd);
	exit(0);
}
P.S. Если надо разработать что-то специфическое - запросто. В свободное от работы время могу заняться (вот только куплю на выходных звуковую карту с АЦП, поддерживающим измерение постоянного напряжения).
eddy вне форума  
Непрочитано 10.03.2010, 14:53  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Компьютерные приборы с использованием звуковой карты

P.P.S. Исходник выкладываю по GPLv3. Пользуйтесь на здоровье, кому надо. Программка сырая, но, как уже говорил, написана была только для тестов.
eddy вне форума  
Непрочитано 10.03.2010, 16:12  
Servk
Прописка
 
Регистрация: 30.01.2010
Сообщений: 154
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
Servk на пути к лучшему
По умолчанию Re: Компьютерные приборы с использованием звуковой карты

Сообщение от eddy Посмотреть сообщение
Зачем же биосом?
Выключить нужный usb-порт:
Код:
echo suspend › /sys/bus/usb/devices/‹нужный usb›/power/level
включить usb:
Код:
echo on › /sys/bus/usb/devices/‹нужный usb›/power/level

Пожалуйста. Вот простенькая программка, которой я тестировал звуковые карты на предмет реальной разрядности (в линейном участке характеристики ЦАП) и поддержки постоянки на АЦП. О результатах говорил уже где-то выше, не помню, приводил ли программку, на всякий случай вот она:


Простите, речь идет о программе для управления USB (первая цитата), а не о ЗК (цитата ниже)

Последний раз редактировалось Servk; 10.03.2010 в 16:15. Причина: две цитаты
Servk вне форума  
Непрочитано 10.03.2010, 16:25  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Компьютерные приборы с использованием звуковой карты

Сообщение от Servk Посмотреть сообщение
Простите, речь идет о программе для управления USB (первая цитата), а не о ЗК (цитата ниже)
Этот форум об использовании звуковых карт. Вот я Вам код для работы с ЗК и привел. Никакой разницы нет, как она подключалась, главное, чтобы был модуль ядра для этой ЗК - oss или alsa безразличен интерфейс, они не работают напрямую с железом. Да и ни к чему это.
В код можно вставить, куда нужно, записи для управления питанием (только в этом случае программе нужно будет давать права root).
eddy вне форума  
Непрочитано 10.03.2010, 16:51  
Servk
Прописка
 
Регистрация: 30.01.2010
Сообщений: 154
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
Servk на пути к лучшему
По умолчанию Re: Компьютерные приборы с использованием звуковой карты

Сообщение от eddy Посмотреть сообщение
Этот форум об использовании звуковых карт. Вот я Вам код для работы с ЗК и привел. Никакой разницы нет, как она подключалась, главное, чтобы был модуль ядра для этой ЗК - oss или alsa безразличен интерфейс, они не работают напрямую с железом. Да и ни к чему это.
В код можно вставить, куда нужно, записи для управления питанием (только в этом случае программе нужно будет давать права root).
Все понятно, воз и ныне там.
Servk вне форума  
Непрочитано 10.03.2010, 17:41  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Компьютерные приборы с использованием звуковой карты

Сообщение от Servk Посмотреть сообщение
Все понятно, воз и ныне там.
В смысле? Вы опишите конкретно то, что хотите получить. Может быть, у меня даже найдется готовое решение.
eddy вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 03:43.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot