Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

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

 
Опции темы

Компьютерные приборы с использованием звуковой карты

Непрочитано 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.RUN
 
Регистрация: 17.01.2007
Адрес: ХМАО-Югра
Сообщений: 4,361
Сказал спасибо: 549
Сказали Спасибо 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.RUN
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
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.RUN
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
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.RUN
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
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.RUN
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Компьютерные приборы с использованием звуковой карты

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

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

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

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


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.