473,659 Members | 2,685 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

acmStreamOpen always fails with MMSYSERR_INVALF LAG Why?

Hi,
I'm trying to use the acm APIs in VB.NET. acmStreamOpen always returns
MMSYSERR_INVALF LAG. Here's how I use it :

declaration is :

Declare Auto Function acmStreamOpen Lib "MsAcm32.dl l" (ByRef phas As IntPtr,
ByVal had As Long, ByRef pwfxSrc As MPEGLAYER3WAVEF ORMAT, ByRef pm_wfxDst As
WAVEFORMATEX, ByRef pwfltr As Long, ByRef dwCallback As Long, ByRef
dwinstance As Long, ByVal fdwOpen As Int32) As Int32

Used like this :

res = acmStreamOpen(m _has, 0&, m_MP3wfxSrc, m_wfxDst, 0&, 0&, 0&,
ACM_STREAMOPENF _NONREALTIME)

It returns 10, so Invalid Flag... the only specified flag is NonRealtime so
it should work for almost any codec. I'm trying to convert from Mp3 to Wave
(PCM) so I really don't see why it fails. Can someone help me please? I
don't think this is a .NET related error, but I'm posting in .net groups
anyway, in case it does.

Thanks

ThunderMusic
Dec 30 '05 #1
14 3522
ThunderMusic wrote:
I'm trying to use the acm APIs in VB.NET. acmStreamOpen
always returns MMSYSERR_INVALF LAG. Here's how I use it :

declaration is :

Declare Auto Function acmStreamOpen Lib "MsAcm32.dl l"
(ByRef phas As IntPtr, ByVal had As Long, ByRef pwfxSrc
As MPEGLAYER3WAVEF ORMAT, ByRef pm_wfxDst As WAVEFORMATEX,
ByRef pwfltr As Long, ByRef dwCallback As Long, ByRef
dwinstance As Long, ByVal fdwOpen As Int32) As Int32
Used like this :

res = acmStreamOpen(m _has, 0&, m_MP3wfxSrc, m_wfxDst, 0&,
0&, 0&, ACM_STREAMOPENF _NONREALTIME)


Try this:

Declare Auto Function acmStreamOpen Lib "MsAcm32.dl l"
(ByRef phas As IntPtr,
ByVal had As IntPtr,
ByRef pwfxSrc As MPEGLAYER3WAVEF ORMAT,
ByRef pm_wfxDst As WAVEFORMATEX,
ByVal pwfltr As IntPtr,
ByVal dwCallback As IntPtr,
ByVal dwinstance As IntPtr,
ByVal fdwOpen As Int32) As Int32

res = acmStreamOpen(m _has, 0, m_MP3wfxSrc, m_wfxDst,
0, 0, 0, ACM_STREAMOPENF _NONREALTIME)

If it doesn't like 0, use IntPtr.Zero.
--
// Alessandro Angeli
// MVP :: Digital Media
// a dot angeli at psynet dot net
Dec 30 '05 #2
ThunderMusic wrote:
I'm trying to use the acm APIs in VB.NET. acmStreamOpen
always returns MMSYSERR_INVALF LAG. Here's how I use it :

declaration is :

Declare Auto Function acmStreamOpen Lib "MsAcm32.dl l"
(ByRef phas As IntPtr, ByVal had As Long, ByRef pwfxSrc
As MPEGLAYER3WAVEF ORMAT, ByRef pm_wfxDst As WAVEFORMATEX,
ByRef pwfltr As Long, ByRef dwCallback As Long, ByRef
dwinstance As Long, ByVal fdwOpen As Int32) As Int32
Used like this :

res = acmStreamOpen(m _has, 0&, m_MP3wfxSrc, m_wfxDst, 0&,
0&, 0&, ACM_STREAMOPENF _NONREALTIME)


Try this:

Declare Auto Function acmStreamOpen Lib "MsAcm32.dl l"
(ByRef phas As IntPtr,
ByVal had As IntPtr,
ByRef pwfxSrc As MPEGLAYER3WAVEF ORMAT,
ByRef pm_wfxDst As WAVEFORMATEX,
ByVal pwfltr As IntPtr,
ByVal dwCallback As IntPtr,
ByVal dwinstance As IntPtr,
ByVal fdwOpen As Int32) As Int32

res = acmStreamOpen(m _has, 0, m_MP3wfxSrc, m_wfxDst,
0, 0, 0, ACM_STREAMOPENF _NONREALTIME)

If it doesn't like 0, use IntPtr.Zero.
--
// Alessandro Angeli
// MVP :: Digital Media
// a dot angeli at psynet dot net
Dec 30 '05 #3
hi,
now it returns 512, and I don't know what it means...

"Alessandro Angeli [MVP::DigitalMed ia]" <no****@nowhere .in.the.net> a écrit
dans le message de news: ev************* @TK2MSFTNGP10.p hx.gbl...
ThunderMusic wrote:
I'm trying to use the acm APIs in VB.NET. acmStreamOpen
always returns MMSYSERR_INVALF LAG. Here's how I use it :

declaration is :

Declare Auto Function acmStreamOpen Lib "MsAcm32.dl l"
(ByRef phas As IntPtr, ByVal had As Long, ByRef pwfxSrc
As MPEGLAYER3WAVEF ORMAT, ByRef pm_wfxDst As WAVEFORMATEX,
ByRef pwfltr As Long, ByRef dwCallback As Long, ByRef
dwinstance As Long, ByVal fdwOpen As Int32) As Int32
Used like this :

res = acmStreamOpen(m _has, 0&, m_MP3wfxSrc, m_wfxDst, 0&,
0&, 0&, ACM_STREAMOPENF _NONREALTIME)


Try this:

Declare Auto Function acmStreamOpen Lib "MsAcm32.dl l"
(ByRef phas As IntPtr,
ByVal had As IntPtr,
ByRef pwfxSrc As MPEGLAYER3WAVEF ORMAT,
ByRef pm_wfxDst As WAVEFORMATEX,
ByVal pwfltr As IntPtr,
ByVal dwCallback As IntPtr,
ByVal dwinstance As IntPtr,
ByVal fdwOpen As Int32) As Int32

res = acmStreamOpen(m _has, 0, m_MP3wfxSrc, m_wfxDst,
0, 0, 0, ACM_STREAMOPENF _NONREALTIME)

If it doesn't like 0, use IntPtr.Zero.
--
// Alessandro Angeli
// MVP :: Digital Media
// a dot angeli at psynet dot net

Dec 30 '05 #4
ok, I found the 512 return value means that the conversion is impossible.
The thing is, I'm starting from a mp3 file (96kbps) to a Wave File (44100,
16bits, stereo). Here are the settings I use (I get these with the
acmFormatSugges t Function) :

- m_wfxDst {WAVEFORMATEX} WAVEFORMATEX
cbSize 0 Short
nAvgBytesPerSec 176400 Integer
nBlockAlign 2 Short
nChannels 2 Short
nSamplesPerSec 44100 Integer
wBitsPerSample 16 Short
wFormatTag 1 Short

- m_MP3wfxSrc {MPEGLAYER3WAVE FORMAT} MPEGLAYER3WAVEF ORMAT
fdwFlags 0 Integer
nBlockSize 1 Short
nCodecDelay 0 Short
nFramesPerBlock 1 Short
- wfx {WAVEFORMATEX} WAVEFORMATEX
cbSize 12 Short
nAvgBytesPerSec 12000 Integer
nBlockAlign 0 Short
nChannels 2 Short
nSamplesPerSec 44100 Integer
wBitsPerSample 16 Short
wFormatTag 85 Short
wID 1 Short

Everything seems to be right, so I don't understand why I get this error.

Thanks for the help

ThunderMusic

"ThunderMus ic" <NO.danlat.at.h otmail.com.SPAM > a écrit dans le message de
news: ew************* @TK2MSFTNGP15.p hx.gbl...
hi,
now it returns 512, and I don't know what it means...

"Alessandro Angeli [MVP::DigitalMed ia]" <no****@nowhere .in.the.net> a
écrit dans le message de news: ev************* @TK2MSFTNGP10.p hx.gbl...
ThunderMusic wrote:
I'm trying to use the acm APIs in VB.NET. acmStreamOpen
always returns MMSYSERR_INVALF LAG. Here's how I use it :

declaration is :

Declare Auto Function acmStreamOpen Lib "MsAcm32.dl l"
(ByRef phas As IntPtr, ByVal had As Long, ByRef pwfxSrc
As MPEGLAYER3WAVEF ORMAT, ByRef pm_wfxDst As WAVEFORMATEX,
ByRef pwfltr As Long, ByRef dwCallback As Long, ByRef
dwinstance As Long, ByVal fdwOpen As Int32) As Int32
Used like this :

res = acmStreamOpen(m _has, 0&, m_MP3wfxSrc, m_wfxDst, 0&,
0&, 0&, ACM_STREAMOPENF _NONREALTIME)


Try this:

Declare Auto Function acmStreamOpen Lib "MsAcm32.dl l"
(ByRef phas As IntPtr,
ByVal had As IntPtr,
ByRef pwfxSrc As MPEGLAYER3WAVEF ORMAT,
ByRef pm_wfxDst As WAVEFORMATEX,
ByVal pwfltr As IntPtr,
ByVal dwCallback As IntPtr,
ByVal dwinstance As IntPtr,
ByVal fdwOpen As Int32) As Int32

res = acmStreamOpen(m _has, 0, m_MP3wfxSrc, m_wfxDst,
0, 0, 0, ACM_STREAMOPENF _NONREALTIME)

If it doesn't like 0, use IntPtr.Zero.
--
// Alessandro Angeli
// MVP :: Digital Media
// a dot angeli at psynet dot net


Dec 30 '05 #5
"Error 512 - Not Possible" is the random return when you have upset the
Audio Compression Manager genie <g>.

I think that the WAVEFORMAT for the MPeg3 should have some extra bytes
added at the end of its structure. The only information I have for it
is a note in C / Delphi ...

// define MP3 output format
LPMPEGLAYER3WAV EFORMAT mp3format = (LPMPEGLAYER3WA VEFORMAT) LocalAlloc(

LPTR, maxFormatSize );
mp3format->wfx.cbSize = MPEGLAYER3_WFX_ EXTRA_BYTES;
mp3format->wfx.wFormatT ag = WAVE_FORMAT_MPE GLAYER3;
mp3format->wfx.nChannel s = 2;
mp3format->wfx.nAvgBytesP erSec = 16000;
mp3format->wfx.wBitsPerSa mple = 0;
mp3format->wfx.nBlockAlig n = 1;
mp3format->wfx.nSamplesPe rSec = 44100; // 44.1kHz
mp3format->wID = MPEGLAYER3_ID_M PEG; <-thik this is ok
mp3format->fdwFlags = MPEGLAYER3_FLAG _PADDING_OFF;
mp3format->nBlockSize = MP3_BLOCK_SIZE; // 417
mp3format->nFramesPerBloc k = 1; // MUST BE ONE
mp3format->nCodecDelay = 0; // 0 for LAME or 1393 for fraunh..

// Delphi declaration
TMpegAudioStrea mFormat = packed record
wfx:TWavFormat ;
wID:WORD;
fdwFlags:DWORD;
nBlockSize:WORD ;
nFramesPerBlock :WORD;
nCodecDelay:WOR D;
end;

As you can see the mp3Format includes the WAVEFORMATEX structure and
then adds MPEGLAYER3_WFX_ EXTRA_BYTES extra bytes. I don't know what the
value of this constant is, but it looks like 10 4 (DWord) + 6 (Word *
3).

I also think you may also need the Frauenhofer professional codec if
you are doing quality decoding. I had it in a file named I3codecp.exe
(first letter is eye). If you Google for it you may find it. Just run
it and it installs the codec.

To use ACM you must convert at the same sample rate (which you are). If
you want to change sample rate you have to do a three-stage conversion,
firstly to the same sample rate with different formats, then to
different sample rates at the same format. It makes for great fun with
multiple buffers in one line with multiple ACM streams <g>.
Alan Lloyd

Dec 30 '05 #6
ok, it works now with the good values in nBlockSize and nBlockAlign.... Now
I have a problem farther in the code (when it comes to allocate the
buffers), but it's strictly a .NET problem, so I will post in .NET groups...

thanks a lot

ThunderMusic

<al********@aol .com> a écrit dans le message de news:
11************* ********@g49g20 00...legro ups.com...
"Error 512 - Not Possible" is the random return when you have upset the
Audio Compression Manager genie <g>.

I think that the WAVEFORMAT for the MPeg3 should have some extra bytes
added at the end of its structure. The only information I have for it
is a note in C / Delphi ...

// define MP3 output format
LPMPEGLAYER3WAV EFORMAT mp3format = (LPMPEGLAYER3WA VEFORMAT) LocalAlloc(

LPTR, maxFormatSize );
mp3format->wfx.cbSize = MPEGLAYER3_WFX_ EXTRA_BYTES;
mp3format->wfx.wFormatT ag = WAVE_FORMAT_MPE GLAYER3;
mp3format->wfx.nChannel s = 2;
mp3format->wfx.nAvgBytesP erSec = 16000;
mp3format->wfx.wBitsPerSa mple = 0;
mp3format->wfx.nBlockAlig n = 1;
mp3format->wfx.nSamplesPe rSec = 44100; // 44.1kHz
mp3format->wID = MPEGLAYER3_ID_M PEG; <-thik this is ok
mp3format->fdwFlags = MPEGLAYER3_FLAG _PADDING_OFF;
mp3format->nBlockSize = MP3_BLOCK_SIZE; // 417
mp3format->nFramesPerBloc k = 1; // MUST BE ONE
mp3format->nCodecDelay = 0; // 0 for LAME or 1393 for fraunh..

// Delphi declaration
TMpegAudioStrea mFormat = packed record
wfx:TWavFormat ;
wID:WORD;
fdwFlags:DWORD;
nBlockSize:WORD ;
nFramesPerBlock :WORD;
nCodecDelay:WOR D;
end;

As you can see the mp3Format includes the WAVEFORMATEX structure and
then adds MPEGLAYER3_WFX_ EXTRA_BYTES extra bytes. I don't know what the
value of this constant is, but it looks like 10 4 (DWord) + 6 (Word *
3).

I also think you may also need the Frauenhofer professional codec if
you are doing quality decoding. I had it in a file named I3codecp.exe
(first letter is eye). If you Google for it you may find it. Just run
it and it installs the codec.

To use ACM you must convert at the same sample rate (which you are). If
you want to change sample rate you have to do a three-stage conversion,
firstly to the same sample rate with different formats, then to
different sample rates at the same format. It makes for great fun with
multiple buffers in one line with multiple ACM streams <g>.
Alan Lloyd

Dec 30 '05 #7
al********@aol. com wrote:
LPTR, maxFormatSize );
mp3format->wfx.cbSize = MPEGLAYER3_WFX_ EXTRA_BYTES;
mp3format->wfx.wFormatT ag = WAVE_FORMAT_MPE GLAYER3;
mp3format->wfx.nChannel s = 2;
mp3format->wfx.nAvgBytesP erSec = 16000;
mp3format->wfx.wBitsPerSa mple = 0;
mp3format->wfx.nBlockAlig n = 1;
mp3format->wfx.nSamplesPe rSec = 44100; // 44.1kHz
mp3format->wID = MPEGLAYER3_ID_M PEG; <-thik this is ok
mp3format->fdwFlags = MPEGLAYER3_FLAG _PADDING_OFF;
mp3format->nBlockSize = MP3_BLOCK_SIZE; // 417
mp3format->nFramesPerBloc k = 1; // MUST BE ONE
mp3format->nCodecDelay = 0; // 0 for LAME or 1393 for
fraunh..
- 1393 as nCodedDelay when using the FhG codec is not
necessary (it works even with 0).

- 417 as nBlockSize is only valid for 44KHz/128Kbps/stereo:
it is the actual MP3 frame size and it depends on the
combination of samplerate/bitrate/channels and
nFramesPerBlock

- nFramesPerBlock should allow other values as long as
nBlockSize is also changed accordingly
As you can see the mp3Format includes the WAVEFORMATEX
structure and then adds MPEGLAYER3_WFX_ EXTRA_BYTES extra
bytes. I don't know what the value of this constant is,
but it looks like 10 4 (DWord) + 6 (Word * 3).
From mmreg.h:

#define MPEGLAYER3_WFX_ EXTRA_BYTES 12
I also think you may also need the Frauenhofer
professional codec if you are doing quality decoding. I
had it in a file named I3codecp.exe (first letter is
eye). If you Google for it you may find it. Just run it
and it installs the codec.


It is L3CodecP.acm and not I3CodecP.acm (L3 as in Layer3,
that is MP3) and it is also illegal to use without a license
from FhG, which is impossible to get AFAIK. I don't think
there is any difference in quality between the pro codec (P)
and the usual one in Windows (A): the A is simply limited to
a max of 56Kbps/24KHz when encoding, while the P had no
limits.
--
// Alessandro Angeli
// MVP :: Digital Media
// a dot angeli at psynet dot net
Dec 30 '05 #8
ThunderMusic wrote:
ok, I found the 512 return value means that the
conversion is impossible. The thing is, I'm starting from
a mp3 file (96kbps) to a Wave File (44100, 16bits,
stereo). Here are the settings I use (I get these with
the acmFormatSugges t Function) :
- m_wfxDst {WAVEFORMATEX} WAVEFORMATEX
cbSize 0 Short
nAvgBytesPerSec 176400 Integer
nBlockAlign 2 Short
nChannels 2 Short
nSamplesPerSec 44100 Integer
wBitsPerSample 16 Short
wFormatTag 1 Short
Are you really sure you got this from acmFormatSugges t()?
With WAVE_FORMAT_PCM audio nBlockAlign must be
nChannels*wBits PerSample/8, that is 4 and not 2.
- m_MP3wfxSrc {MPEGLAYER3WAVE FORMAT} MPEGLAYER3WAVEF ORMAT
fdwFlags 0 Integer
nBlockSize 1 Short
nCodecDelay 0 Short
nFramesPerBlock 1 Short
- wfx {WAVEFORMATEX} WAVEFORMATEX
cbSize 12 Short
nAvgBytesPerSec 12000 Integer
nBlockAlign 0 Short
nChannels 2 Short
nSamplesPerSec 44100 Integer
wBitsPerSample 16 Short
wFormatTag 85 Short
wID 1 Short


Same as before, acmFormatSugges t() filled this in?
nBlockAlign is supposed to be 1 for WAVE_FORMAT_MPE GLAYER3
and nBlockSize is supposed to be the MP3 frame size, which
is always greater than 1 (313 for 44KHz/96Kbps/stereo).
nCodecDelay should be 1393 when using the system's FhG codec
(but it should work with 0 as well).
--
// Alessandro Angeli
// MVP :: Digital Media
// a dot angeli at psynet dot net
Dec 30 '05 #9
> #define MPEGLAYER3_WFX_ EXTRA_BYTES 12

OK, but the Delphi structure shows 10, and interrogating
the driver with ACM gives 14 <g>

On another site the extra bytes were commented with "Void as every
frame of an MPEG file has the information which would be contained in
the extra bytes" - is this true ?
It is L3CodecP.acm and not I3CodecP.acm (L3 as in Layer3,
that is MP3)
My file is I3CodecP.acm (I for India) and that is how I downloaded it.
I don't know if it _is_ Frauenhofer's although that is how it is
labelled with an ACM call. When I got it (some years ago associated
with an article) I emailed Frauenhofer because I suspected it _might_
be pirated. They did not even reply so I assumed that they did not
care.

Alan Lloyd

and it is also illegal to use without a license
from FhG, which is impossible to get AFAIK.


Dec 31 '05 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

8
4434
by: yuri | last post by:
Hi all At coding XP Themes i can't get "GetThemeColor" to work. It always fails ("not found" err. code) regardless of which control parts and states entered. Could somebody help me with advice? Yuri
3
1859
by: Fett | last post by:
Problem: My member variables in the child class are always null. I don't know why this happens! I have a base class for handling a user flow in my web, CWebUseCase, the class is declared like: public class CWebUseCase {...}; This class is inherited into several specific flows like this one CXmlFileList, which I will use to present a simple list to the user. //CXmlFileList declaration:
4
2540
by: Pete H | last post by:
I would like to have my new C++ projects start out with two configurations, UnicodeDebug and UnicodeRelease, instead of the standard Debug and Release configurations that Visual Studio always creates. Is there a way to configure Visual Studio to do this Thanks in advance - Pete H
14
2103
by: ThunderMusic | last post by:
Hi, I'm trying to use the acm APIs in VB.NET. acmStreamOpen always returns MMSYSERR_INVALFLAG. Here's how I use it : declaration is : Declare Auto Function acmStreamOpen Lib "MsAcm32.dll" (ByRef phas As IntPtr, ByVal had As Long, ByRef pwfxSrc As MPEGLAYER3WAVEFORMAT, ByRef pm_wfxDst As WAVEFORMATEX, ByRef pwfltr As Long, ByRef dwCallback As Long, ByRef dwinstance As Long, ByVal fdwOpen As Int32) As Int32
1
1325
by: snavebelac | last post by:
Hi everyone I have a system running on a 2 server environment. One server has the internal database (SQL SERVER 2000 with an MSAccess front end on the clients) and is not open to the internet. The other is just a web server, runs IIS6 and can communicate with SQL Server on the other box only - no direct access to files or anything else due to firewalls. I needed a system, whereby files (images docs pdfs etc) could be made available to...
6
3365
by: itsolution | last post by:
Hi folks, Could you shed some light on this issue? my program is running on Freebsd as a daemon. When user sends a request, it forks itself and lets its child process handles the request. And its main role is just to read a big xml file and save each object into its embedded DB(such as gdbm).
2
1817
by: =?Utf-8?B?SmF5IE1pbGxlcg==?= | last post by:
I'm having problems with the login control when I publish my site. Everything works fine when I run the application from Visual Studio and when I browse directly to the site where it is being developed. The problem comes when I publish the site to another location on the same computer. The login always fails. The site always works from the development location but not from the published location. I've compared everything I can think of...
25
3909
by: Rick Collard | last post by:
Using DAO 3.6 on an Access 2002 database, I'm getting unexpected results with the FindFirst method. Here's the simple code to test: Public Sub FindIt() Dim db As Database, rs As Recordset Dim sCriteria As String Set db = DBEngine.Workspaces(0).Databases(0) Set rs = db.OpenRecordset("tblTest", dbOpenDynaset)
4
2035
by: =?Utf-8?B?QXJtaW4gR2FsbGlrZXI=?= | last post by:
Hi I wrote a test for a workflow. Unfortunately my assertions in the eventhandler which I set up during initialization, fail in every case... What's the problem?? public void MyTestInitialize() { workflowRuntime.WorkflowCompleted += delegate(object
7
4633
by: Richie Kernagan | last post by:
Howdy Problem with the fread() call on MS Visual Studio 2005 running under Win 64. The parameters to fread size and count are both size_t ie 64 bits. Even so the call fails when the size arg is greater than 4GB (ie exceeds 32 bit unsigned value). Any suggestions.
0
8427
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
8330
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
8850
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
1
8523
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
8626
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
7355
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
6178
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
4334
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
2
1737
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.